我有三个具有以下结构的表:
tb1: id(AI, PK), uid, date, text
tb2: id(AI, PK), uid, date, text ... and so on
由于每个表都有额外的unqiue数据,我必须将它们分开。
我想执行一个将合并并获取最后20个条目的查询(即date DESC
)(具体来说,我需要uid
和text
)
从所有3个表中加起来(好像这是一张大表)。
我该怎么做呢?
答案 0 :(得分:0)
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
更有效。
在我的博客中查看此文章以进行性能比较: