我有两张桌子,CHECKINS
和TRIPS
。
我需要在这两个表中列出要排序的条目,最近的日期在顶部。
通常,我会简单地使用 JOIN 而不是用户 ORDER BY 日期列。
但这是挑战;CHECKINS 中有一个日期列,VenueCreatedAt
,而 TRIPS 有两个, TripDateStarted
和TripDateEnded
。
如果您能帮助我处理它,我将不胜感激。测试地址:
我有两张桌子,CHECKINS
和TRIPS
。
我需要在这两个表中列出要排序的条目,最近的日期在顶部。
通常,我会简单地使用 JOIN 而不是用户 ORDER BY 日期列。
但这是挑战;CHECKINS 中有一个日期列,VenueCreatedAt
,而 TRIPS 有两个, TripDateStarted
和TripDateEnded
。
如果您能帮助我处理它,我将不胜感激。测试地址:
怎么样:
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 或 PHP 排序函数对 MySQL 查询进行排序
(它们都是关于按特定列集的每一行的最小值或最大值进行排序)