1

3张桌子

table: people 

id name 
1  john  
2  Mike
3  Sam  
4  Andy 

-

table goods:

   g_id g_name  g_class
    1   sugar  food
    2   salt   food
    3   boat   transp
    4   house  habitation
    5   car    transp

-

   table goods_owned:
      go_id person_id   good_id
        1   3           3
        2   3           1
        3   3           5
        4   2           4
        5   1           2

现在当我选择

SELCT people.id, people.name, goods.name
   FROM people
      LEFT JOIN goods_owned ON goods_owned.person_id = people.id
      LEFT JOIN goods ON goods.g_id = goods_owned.good_id
         WHERE people.id = 3

然后作为响应,它复制表“人”中的条目:

1, Mike, boat
1, Mike, sugar
1, Mike, car

有没有办法建立请求以获得:

1, Mike, boat, sugar, car
4

1 回答 1

4

是的,看看GROUP_CONCAT,它收集了每个值的所有值GROUP BY并用逗号分隔它们。

SELCT people.id, people.name, GROUP_CONCAT(goods.name)
FROM people
LEFT JOIN goods_owned ON goods_owned.person_id = people.id
LEFT JOIN goods ON goods.g_id = goods_owned.good_id
WHERE people.id = 3
GROUP BY people.id
于 2012-05-17T01:03:34.390 回答