mySQL查询 - 按日期排序

时间:2011-01-20 18:27:46

标签: mysql sql union

我正在合并两个表,每个表都有不同的事件数据。每个表都有事件的日期。

如何组合这些事件以按日期无缝排序?

SELECT 
   t1.eventName, 
   t1.eventTime, 
   t2.evntName, 
   t2.evntTime
FROM t1
LEFT JOIN t2 ON (t1.eventID = t2.eventID)
ORDER BY ??? DESC
LIMIT 10

3 个答案:

答案 0 :(得分:2)

@Gonzalo很接近,但并不完全存在。您需要将每个表放入子查询中,并在最终结果中为每个列添加别名。如果一个表没有您需要的列,则使用文字并将其别名。

(SELECT eventName, eventTime, foo FROM t1)
UNION ALL
(SELECT evntName AS eventName, evntTime AS eventTime, NULL AS foo FROM t2)
ORDER BY eventTime DESC

将任何WHERE子句放在子查询中。

答案 1 :(得分:1)

不是100%肯定你在这里想做什么,但也许这个:

ORDER BY GREATEST(t1.eventTime, t2.eventTime) DESC

ETA:

看起来您无法直接与GREATEST比较日期,因此您可能需要这样做:

ORDER BY GREATEST(UNIX_TIMESTAMP(t1.eventTime), UNIX_TIMESTAMP(t2.eventTime)) DESC

答案 2 :(得分:0)

您正在加入表格,这将导致两个表格的记录合并为一行。如果您真的想要合并这样的表,那么您需要做的是UNION查询。像这样:

SELECT eventName, eventTime FROM (
    SELECT eventName, eventTime
    FROM t1

    UNION

    SELECT eventName, eventTime
    FROM t2
)
ORDER BY eventTime

因此,您在子查询中合并两个表的结果,然后对其进行排序。

祝你好运!