如何将第二个表的行合并为1个字段

时间:2012-09-12 00:21:07

标签: mysql sql

我一直在尝试生成一个查询table1的查询,然后CONCAT table2.column1的所有值,其中table1.id = table2.owner

People
 name | id
-------------
 tim  | 1
 jill | 2
 john | 3


Dogs
name | owner
--------------
 a   | 1
 b   | 1
 c   | 2
 d   | 2

使用下表我需要一个输出

的查询
 name | dogs
 -----------
 tim  | a, b
 jill | c, d
 john | NULL (or a blank text or just so long as the name john still shows)

我花了几个小时,真的不能这样做。我认为OUTER JOIN和group_concat()之间存在某种形式的混搭。但我并没有真正接近我的答案。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您需要使用 GROUP_CONCAT GROUP BY

SELECT p.name, GROUP_CONCAT(d.name)
FROM   people p
LEFT JOIN dogs d 
     ON p.id = d.owner
GROUP BY p.name

请参阅SQL Fiddle with Demo

答案 1 :(得分:2)

我猜你在MySQL寻找 GROUP_CONCAT

SELECT  a.name, GROUP_CONCAT(b.name) dogsName
FROM    People a
        LEFT JOIN Dogs b
          ON a.id = b.owner
GROUP BY a.name

SQLFiddle Demo