如何从一个表中选择单行并从另一表中选择多行?

时间:2019-04-24 17:33:50

标签: mysql sql mysql-workbench

我有一个具有以下定义的下表用户

 id integer 
 Name varchar
 Email varchar 
 Location varchar
 Phone varchar
 Picture varchar
 Status varchar

我还有另一个表用户技能,其具有以下定义

id integer
 Userid integer
 Skill   integer

否,我想合并两个表并从第一张表中选择一行,而从另一张表中选择多行,因为用户可以具有多种技能,但是我要获得多行用户数据,但我只想一行? 有人可以告诉我如何在同一行中获取用户及其相应的技能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用PIVOT进行操作。 您可以从“技能”表中选择技能,然后将其透视成一行。 然后与用户加入。

这是一个具有固定技能的示例。

WITH TEMP AS
(
 SELECT 'John' AS U, 'Driver' AS S
 UNION ALL
 SELECT 'John' AS U, 'Plumber' AS S
 UNION ALL
 SELECT 'Jim' AS U, 'Driver' AS S
 UNION ALL
 SELECT 'Tom' AS U, 'Driver' AS S
)

SELECT * FROM 
( SELECT *, U AS DRIVER FROM TEMP ) AS P
PIVOT
(
    COUNT([U])
    FOR S IN ([Driver],[Plumber])
) AS PIV

如果您具有多种技能,则必须首先查询该技能,然后将其转换为字符串并在该字符串上运行EXEC。