【发布时间】:2020-04-15 04:41:03
【问题描述】:
我想获取最近发生的 100 个事件。事件分散在多个表中。这是一个例子:
SELECT * FROM log_items_purchased ORDER BY timestamp DESC LIMIT 100
UNION
SELECT * FROM log_items_fulfilled ORDER BY timestamp DESC LIMIT 100
UNION
SELECT * FROM log_items_shipped ORDER BY timestamp DESC LIMIT 100
这将返回最多 300 条记录。然后,我将获取结果集,按时间戳排序,并获取前 100 条记录。如何在单个 SQL 查询中执行此操作,其中 SQL 只会在结果集中返回 100 条记录。
我意识到可以通过从每个查询中删除 LIMIT 100,然后进行添加 LIMIT 100 的外部查询来做到这一点,但是这些表确实很大,而且效率很低。
【问题讨论】: