我有三个表,结构如下:
tb1: id(AI, PK), uid, date, text
tb2: id(AI, PK), uid, date, text ... and so on我必须将它们分开,因为每个表都有额外的唯一数据。我想执行一个查询,它将合并所有3个表中的最后20个条目(即date DESC) (具体地说,我需要uid和text) (就像这是一个大表一样)。
我该怎么做呢?
发布于 2009-08-10 16:53:10
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更有效。
有关性能比较,请参阅我博客中的这篇文章:
https://stackoverflow.com/questions/1255967
复制相似问题