mysql - 来自网桥 table 的多对多查询
mysql - many to many query from bridge table
我有一个任务要完成。存在多对多关系。桥梁 table 已经建成,看起来像
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
我该怎么做?我试过加入 table ,没用
我认为您可以使用 GROUP BY 和 GROUP_CONCAT()
使用简单的查询来实现此目的
SELECT left_id, GROUP_CONCAT(right_id SEPARATOR ' ') as rigth_id
FROM left-right
GROUP BY left_id;
这是 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
我有一个任务要完成。存在多对多关系。桥梁 table 已经建成,看起来像
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
我该怎么做?我试过加入 table ,没用
我认为您可以使用 GROUP BY 和 GROUP_CONCAT()
使用简单的查询来实现此目的SELECT left_id, GROUP_CONCAT(right_id SEPARATOR ' ') as rigth_id
FROM left-right
GROUP BY left_id;
这是 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