我正在合并两个表,每个表都有不同的事件数据。每个表都有事件的日期。
如何组合这些事件以按日期无缝排序?
SELECT
t1.eventName,
t1.eventTime,
t2.evntName,
t2.evntTime
FROM t1
LEFT JOIN t2 ON (t1.eventID = t2.eventID)
ORDER BY ??? DESC
LIMIT 10
答案 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
因此,您在子查询中合并两个表的结果,然后对其进行排序。
祝你好运!