顺序连接的左连接结果
Posted
技术标签:
【中文标题】顺序连接的左连接结果【英文标题】:Order concatenated left join results 【发布时间】: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
如何对串联的左连接结果进行排序?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于顺序连接的左连接结果的主要内容,如果未能解决你的问题,请参考以下文章