1

我有两张桌子,CHECKINSTRIPS

我需要在这两个表中列出要排序的条目,最近的日期在顶部。

通常,我会简单地使用 JOIN 而不是用户 ORDER BY 日期列。

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

如果您能帮助我处理它,我将不胜感激。测试地址:

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

4

1 回答 1

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

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

按三个不同列中的最大值排序

使用 PHP/MySQL 从多列中选择最小值

使用 ORDER BY 或 PHP 排序函数对 MySQL 查询进行排序

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

于 2013-03-12T17:55:42.917 回答