我有这个问题:
SELECT T1.*
FROM TABLE1
LEFT JOIN TABLE2 T2 ON T2.ID = T1.ID
ORDER BY T1.DATE DESC, T2.DATE DESC;
在上面的查询中,我使用来自不同表的多个排序列。按列排序都是timestamp数据类型。我的要求是:我需要对更高日期和时间(最新)的查询进行排序。例如,如果T1.DATE是最新的,那么我需要根据T1.DATE对查询进行排序,否则需要根据T2.DATE进行排序。
我如何在ORDER BY
子句中处理这个问题?
同样,我也可能有TABLE3。如果我加入该表,我必须按照TABLE3的日期排序。有没有人有任何解决方案?
答案 0 :(得分:1)
您可以使用greatest()
比较日期列,该列返回每行所有参数的最大值:
SELECT T1.* FROM TABLE1
LEFT JOIN TABLE2 T2 ON T1.ID = T2.ID
LEFT JOIN TABLE2 T3 ON T2.ID = T3.ID
ORDER BY greatest(T1.DATE, T2.DATE, T3.DATE) DESC;