Мне было интересно, есть ли способ упорядочить столбец GROUP_CONCAT-ed по другому столбцу. Вот мой пример:
Таблица
Пользователи
id | name
----+------------
0 | John Smith
users_majors
user_id | major_id | order
--------+----------+-------
0 | 2 | 1
0 | 1 | 0
майоров
id | name
----+-------------
0 | Biology
1 | Chemistry
2 | Engineering
А вот и мой запрос:
SELECT `users`.*, GROUP_CONCAT(DISTINCT `majors`.name) AS major, GROUP_CONCAT(DISTINCT `users_majors`.order) AS major_order
FROM `users`
LEFT JOIN users_majors ON (users_majors.user_id = users.id)
LEFT JOIN majors ON (majors.id = users_majors.major_id)
GROUP BY users.id
Я получаю этот набор результатов, как и ожидалось:
id | name | major | major_order
---+-------------+-----------------------+-------------
0 | John Smith | Engineering,Chemistry | 1,0
Я хочу, чтобы столбец "major" автоматически сортировался по столбцу "major_order", поэтому я могу удалить этот столбец и получить результирующий набор, подобный этому:
id | name | major
---+-------------+-----------------------
0 | John Smith | Chemistry,Engineering
Есть предложения?