【问题标题】:how to select single row from one table and multiple rows from another table toghether?如何从一个表中选择单行和从另一个表中选择多行?
【发布时间】:2019-04-24 17:33:49
【问题描述】:

我有一个下表 users 具有以下定义

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

我还有另一个表userskills,它有以下定义

id integer
 Userid integer
 Skill   integer

不,我想合并这两个表并从第一个表中选择单行,而从另一个表中选择多行,因为用户可以拥有多种技能,但我得到多行用户数据但我想要单行? 谁能告诉我如何在一行中获取用户及其相应的技能?

【问题讨论】:

标签: mysql sql mysql-workbench


【解决方案1】:

您可以使用 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。

【讨论】:

  • 你能在这里给我一个示例查询吗
  • @Atulkumarsingh 上面的基本示例,但您必须对其进行自定义以完全适合您的需要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多