SELECT
GROUP_CONCAT(CONCAT(user_firstname,' ', user_lastname)) fullname,
workour_day,
GROUP_CONCAT(distinct timetable_start) starttime,
GROUP_CONCAT(timetable_end) endtime
FROM doctors_timetable
INNER JOIN doctors ON user_id = doctor_id
INNER JOIN workours ON timetable_day = workour_id GROUP BY workour_day
ORDER BY timetable_id ASC
周四之前一切都很好,而不是混合:
http://s24.postimg.org/w827dxclh/Capture.png
MYSQL结果顺序正在混合。我该如何解决?
答案 0 :(得分:1)
正如我从您的评论中理解的那样,您需要将starttime和endtitme值按升序排列,如果是这种情况,您可以使用ORDER BY
中的GROUP_CONCAT
来判断连接值的顺序
SELECT
GROUP_CONCAT(CONCAT(user_firstname,' ', user_lastname)) fullname,
workour_day,
GROUP_CONCAT(distinct timetable_start ORDER BY timetable_start ASC) starttime,
GROUP_CONCAT(timetable_end ORDER BY timetable_end) endtime
FROM doctors_timetable
INNER JOIN doctors ON user_id = doctor_id
INNER JOIN workours ON timetable_day = workour_id
GROUP BY workour_day
ORDER BY timetable_id ASC
注意您正在使用GROUP_CONCAT
函数,默认情况下默认设置为1024个字符,如果您的输出超出此限制,结果将被截断以增加限制,您可以看到手册中提到的步骤
答案 1 :(得分:0)
timetable_id仍然是一个谜,但它是你所订购的。如果你想强制对它们进行排序,请按starttime,endtime排序。