在mysql中合并数据bt表

时间:2009-08-10 16:48:59

标签: mysql merge union

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

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

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

我该怎么做呢?

1 个答案:

答案 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更有效。

在我的博客中查看此文章以进行性能比较: