我有以下表格:
Table: person
id | name
1 | John
2 | Ana
3 | Thomas
Table: fruit
id | name
1 | orange
2 | banana
3 | grapefruit
4 | lemon
5 | apricot
Table: person_fruit
person_id | fruit_id
1 | 1
1 | 3
2 | 1
2 | 2
1 | 5
正如您所猜测的那样,person_fruit表可以作为多对多的关系。
我正在进行查询,列出所有人和他们喜欢的水果串联在一起。我的问题是我不能用水果名称来展示他们最喜欢的水果,如:
John | apricot, grapefruit, orange
Ana | banana, orange
Thomas | NULL
我当前的MySQL查询如下:
SELECT
p.name,
GROUP_CONCAT(f.name SEPARATOR ', ') fruit
FROM
person p
LEFT JOIN person_fruit pf
ON p.id = pf.person_id
LEFT JOIN `fruit` `f`
ON f.id = pf.fruit_id
GROUP BY
p.id
如何对连接的左连接结果进行排序?
答案 0 :(得分:1)
您可以在GROUP_CONCAT中使用ORDER BY。
p.name也应该在GROUP BY子句中
SELECT
p.name,
GROUP_CONCAT(f.name ORDER by f.name ASC SEPARATOR ',') fruit
FROM
person p
LEFT JOIN person_fruit pf
ON p.id = pf.person_id
LEFT JOIN `fruit` `f`
ON f.id = pf.fruit_id
GROUP BY
p.name