【发布时间】:2017-12-08 03:08:26
【问题描述】:
我有以下表格:
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
如何对串联的左连接结果进行排序?
【问题讨论】:
标签: mysql group-by many-to-many left-join group-concat