如何为这个场景编写sql查询?

xuo3flqw  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(342)

一位面试官问我这个问题,给你两个表,表1的列是l1,t1,表2的列是t。编写sql查询以获得所需的结果。

我仍然停留在如何编写查询以获得所需的输出上。
用过这个, SELECT table1.L1, table2.Name FROM table1 INNER JOIN table2 on table1.T1 = table2.T; 但是这样它就不会连接到name wrt l1的输出。
谢谢你提前帮忙。

ev7lccsx

ev7lccsx1#

使用此查询

SELECT table1.L1, GROUP_CONCAT(table2.name separator ', ')
FROM table1 AS table1
INNER JOIN table2 as table2 ON table1.T1 = table2.t
GROUP BY table1.L1

sql fiddle在这里进行实时测试http://sqlfiddle.com/#!9/3ac3a3/1/0号

olhwl3o2

olhwl3o22#

这个sql将得到结果。 SELECT L1, GROUP_CONCAT(name) from Table1 INNER JOIN Table2 on T1 = T GROUP BY L1

cotxawn7

cotxawn73#

使用join(内部连接)连接两个表。然后使用 GROUP BY 获取聚合数据,然后最终利用groupconcat函数实现逗号分隔的名称。见下表:

SELECT table1.l1, GROUP_CONCAT(table2.name) 
FROM table1 
JOIN table2 ON table1.t1 = table2.t 
GROUP BY table1.l1
tsm1rwdh

tsm1rwdh4#

您需要一个aggegation函数作为groupconcat来获取name的逗号分隔结果

SELECT table1.L1,GROUP_CONCAT( table2.Name ORDER BY table2.Name ASC SEPARATOR ',')
  FROM table1 
  INNER JOIN table2 on table1.T1 = table2.T
  GROUP BY table1.L1 
  ORDER BY FIELD(table1.L1,'X','Y','Z')

如果没有聚集函数,就可以得到分隔行的结果。。相反,使用group by an group\ U concat可以获得与同一行上的一个l1相关的所有名称

相关问题