MySQL - 从辅助表中选择结果作为主表中的列

时间:2016-11-19 14:20:44

标签: mysql

我有一组由两个表组成的数据:表一是一组唯一项,表二是将第一个表中的项链接在一起的引用日志。例如:

表一

+------------+--------------------+
|         id | name               |
+------------+--------------------+
|         1  | Item 1             |
|         2  | Item 2             |
|         3  | Item 3             |
|         4  | Item 4             |
|         5  | Item 5             |
+------------+--------------------+

表二

+------------+--------------------+
|  item_1_id | item_2_id          |
+------------+--------------------+
|         1  | 2                  |
|         1  | 3                  |
|         1  | 5                  |
|         2  | 4                  |
|         2  | 5                  |
+------------+--------------------+

是否可以对表2中的行进行分组,并将它们作为表1中的列显示在某种数组/集合中。所以根据我的示例表,我希望返回这样的内容:

+------------+-----------+----------+
|         id | name      | results  |
+------------+-----------+----------+
|         1  | Item 1    | 2, 3, 5  |
|         2  | Item 2    | 1, 4, 5  |
|         3  | Item 3    | 1        |
|         4  | Item 4    | 2        |
|         5  | Item 5    | 1, 2     |
+------------+-----------+----------+

1 个答案:

答案 0 :(得分:1)

您可以使用group_concat显示聚合结果,使用选择联合来获取用于分组的相关项目

  select id, name, group_concat( item1)
  from table_one 
  left join 
  (select  item_1_id as item1, item_2_id  as item2  
  from table_two
  union  
  select  item_2_id , item_1_id    
  from table_two
  order by item1)  t1 ont1.item1 = table_one.id
  group by id, name