当有3个日期列时按日期排序

时间:2013-03-12 17:48:27

标签: mysql sql

我有两个表,CHECKINSTRIPS

我需要列出这两个表格中的条目,并以最新日期排在最前面。

通常,我只使用JOIN而不是用户ORDER BY日期列。

但这是挑战; CHECKINS中有一个日期列,VenueCreatedAt,而TRIPS,TripDateStartedTripDateEnded有两个。

如果你能帮助我处理它,我将非常感激。测试地址:

http://sqlfiddle.com/#!2/7f6055/33

1 个答案:

答案 0 :(得分:3)

怎么样:

SELECT * FROM TRIPS LEFT JOIN CHECKINS 
USING (MemberID) ORDER BY CheckInDateEntered ASC;

http://sqlfiddle.com/#!2/7f6055/3

您还可以按优先级顺序按逗号分隔多个字段进行排序:

SELECT * FROM TRIPS LEFT JOIN CHECKINS USING (MemberID) 
ORDER BY VenueCreatedAt,TripDateStarted,TripDateEnded ASC;

http://sqlfiddle.com/#!2/7f6055/10

如果这也不起作用,请查看LEAST功能:

SELECT * FROM TRIPS LEFT JOIN CHECKINS USING (MemberID) 
ORDER BY LEAST(VenueCreatedAt,TripDateStarted,TripDateEnded) ASC;

http://sqlfiddle.com/#!2/7f6055/15

但请注意,这只会按日期最短的一列排序。如果您想按每行(交替列)的最小值排序,这三个问题中的任何一个都可能对您有所帮助:

Order by max value in three different columns

Select Smallest Value From Multiple Columns with PHP/MySQL

Sorting a MySQL query with ORDER BY or with PHP sort functions

(它们都是关于按特定列的每一行的最小值或最大值排序)