mysql - 来自桥表的多对多查询

时间:2016-09-11 17:50:15

标签: php mysql group-by many-to-many aggregate-functions

我有一项任务要完成。有很多关系。桥牌表已经制作好像

    left id     right id
  +----------+---------+
 |        1 |       1 |
 |        1 |       2 |
 |        2 |       1 |
 |        2 |       2 |
 |        2 |       8 |
 |        3 |       1 |
 |        3 |       2 |
 |        3 |       4 |
 |        4 |       1 |
 |        4 |       2 |
 |        4 |       3 |
 |        4 |       5 |
 |        5 |       1 |
 |        5 |       2 |
 |        5 |       4 |
 |        5 |       6 |
 |        5 |       7 |
 +----------+---------+

我必须在一行中显示左id =右id 例如

for left id 1
left1 | right1 righ 2
for left id 3
left3 | right1 right2 right 4

我该怎么做?我试过加入表,没有工作

2 个答案:

答案 0 :(得分:0)

我认为您可以使用简单查询来使用GROUP BY和GROUP_CONCAT()

来实现此目的
SELECT left_id, GROUP_CONCAT(right_id SEPARATOR ' ') as rigth_id 
FROM left-right 
GROUP BY left_id;

enter image description here

答案 1 :(得分:0)

这是GROUP_CONCAT()GROUP BY的合理直接应用。 (http://sqlfiddle.com/#!9/ed7e1/2/0

SELECT leftId, 
       GROUP_CONCAT(rightId ORDER BY rightId) rightIds
  FROM bridge
 GROUP BY leftId