1

我有三个具有以下结构的表:

tb1: id(AI, PK), uid, date, text
tb2: id(AI, PK), uid, date, text ... and so on

由于每个表都有额外的 unqiue 数据,我必须将它们分开。我想执行一个查询,该查询将合并并从所有 3 个组合的表中获取最后 20 个条目(即,date DESC)(特别是,我需要uidtext)(好像这是一个大表)。

我该怎么做呢?

4

1 回答 1

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.

有关性能比较,请参阅我的博客中的这篇文章:

于 2009-08-10T16:53:09.550 回答