MYSQL结果顺序是混合的

时间:2014-05-12 19:56:41

标签: mysql

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

Example

MYSQL结果顺序正在混合。我该如何解决?

2 个答案:

答案 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排序。