объединение данных bt таблиц в mysql - PullRequest
1 голос
/ 10 августа 2009

У меня есть три таблицы со следующей структурой:

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

Я должен хранить их отдельно из-за дополнительных данных, которые есть в каждой таблице. Я хотел бы выполнить запрос, который объединит и получит мне последние 20 записей (то есть date DESC) (в частности, мне нужно uid и text) из всех трех таблиц вместе (как если бы это был один большой стол).

Как мне это сделать?

1 Ответ

0 голосов
/ 10 августа 2009
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.

См. Эту статью в моем блоге для сравнения производительности:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...