[英]How to concatenate values from joined table in specific order, mysql
关于我的最后一个问题 ,我遇到了对联接值进行排序的问题。
在此示例中,我有一个包含要约的表,在这个问题中这并不重要,但它是主表:
Table offers
----------------------------
id title price
----------------------------
1 Offer 1 title 300 Eur
2 Offer 2 title 250 Eur
3 Offer 3 title 350 Eur
有部门城市列表:
Table departments
----------------------------
id name
----------------------------
1 London
2 Leeds
3 Manchester
4 Glasgow
报价表和关联表
Table rel_departments
------------------------
id offer_id rel_id
------------------------
1 1 1
2 1 3
3 1 2
4 2 1
5 3 4
运行查询以获取串联的部门城市名称时,得到了结果。 但是,此结果的顺序不佳。
SELECT `offers`.id,
GROUP_CONCAT(`departments`.`name` SEPARATOR ', ') AS departures
FROM `offers`
INNER JOIN `rel_departments` ON (`rel_departments`.`offer_id` = `offers`.id)
INNER JOIN `departments` ON (`rel_departments`.`rel_id` = `departments`.id)
GROUP by offers.id
我得到了结果:
id departures
----------------------------------------
1 London, Manchester, Leeds
2 London
3 Glasgow
可以,但是我需要对它们进行排序(以这种方式在关系表中按id降序排列),这意味着我需要结果(对于第一个报价id)是利兹,曼彻斯特,伦敦
我已经尝试了一切,但没有成功。 任何想法?
ps HERE是一个sqlfiddle演示
您可以在GROUP_CONCAT函数中使用ORDER BY。
询问
SELECT `offers`.id,
GROUP_CONCAT(`departments`.`name` ORDER BY `offers`.id SEPARATOR ', ') AS departures
FROM `offers`
INNER JOIN `rel_departments` ON (`rel_departments`.`offer_id` = `offers`.id)
INNER JOIN `departments` ON (`rel_departments`.`rel_id` = `departments`.id)
GROUP by offers.id
结果
| id | departures |
|----|---------------------------|
| 1 | Leeds, Manchester, London |
| 2 | London |
| 3 | Glasgow |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.