6

我需要编写一个查询,它将返回给我一个记录中一组中的所有项目,用逗号分隔,来自两个表,示例结果如下,

物品表:

--------------------
Name    |  Group_ID
--------------------
item1   |  1
item2   |  1
item3   |  3    

组表:

--------------------
ID    |  Name
--------------------
 1    |  Group1
 3    |  Group3     

我正在寻找的结果:

------------------------------
GId  |  Items  
------------------------------
 1   |  item1, item2
 3   |  item3      
4

3 回答 3

9

使用GROUP_CONCAT

SELECT group_concat(Name) FROM table
于 2013-08-28T19:51:29.307 回答
0

您需要使用 GROUP_CONCAT 和 GROUP BY

它会是这样的:

SELECT gr.id, GROUP_CONCAT(item.name SEPARATOR ',')
FROM  `group` gr LEFT JOIN item
ON(gr.id=item.group_id)
GROUP BY gr.id

此查询将显示没有关联项目的组。如果您不需要这些组,那么最好的选择是@peterms

于 2013-08-28T19:52:53.087 回答
0

根据您想要的输出并假设您始终每组至少有一个项目,或者如果您的 nat 对没有项目但您甚至不需要加入表的组感兴趣。只适用GROUP_CONCAT()items

SELECT group_id gid, GROUP_CONCAT(Name) items
  FROM items
 GROUP BY group_id

输出:

| 标识 | 物品 |
|-----|-------------|
| 1 | 项目1,项目2 |
| 3 | 项目3 |

这是SQLFiddle演示

现在,如果您需要选择所有组,无论它们是否有项目,那么您必须使用@0r10n 的答案中的外连接

这是该场景的SQLFiddle演示。

于 2013-08-28T19:55:14.737 回答