我有三个具有以下结构的表:
tb1: id(AI, PK), uid, date, text
tb2: id(AI, PK), uid, date, text ... and so on
由于每个表都有额外的 unqiue 数据,我必须将它们分开。我想执行一个查询,该查询将合并并从所有 3 个组合的表中获取最后 20 个条目(即,date DESC
)(特别是,我需要uid
和text
)(好像这是一个大表)。
我该怎么做呢?
SELECT *
FROM (
SELECT uid, text
FROM tb1
ORDER BY
date DESC
LIMIT 20
) q
UNION ALL
SELECT *
FROM (
SELECT uid, text
FROM tb2
ORDER BY
date DESC
LIMIT 20
) q2
UNION ALL
(
SELECT uid, text
FROM tb3
ORDER BY
date DESC
LIMIT 20
) q3
ORDER BY
date DESC
LIMIT 20
这比单纯的UNION ALL
.
有关性能比较,请参阅我的博客中的这篇文章: