Как объединить результаты двух запросов с порядком? - PullRequest
16 голосов
/ 17 марта 2011

Как объединить результаты 2 запросов, упорядочив по дате?

SELECT * FROM table1 WHERE tag='1'
SELECT * FROM table2 WHERE tag='3'

table1, table2 имеют одинаковые поля: id|article|author|tag|date

PS: ПО ПУТИ, тегIS workid

Ответы [ 2 ]

33 голосов
/ 17 марта 2011

Вы можете использовать UNION ALL, чтобы получить строки из обеих таблиц:

SELECT id, article, author, tag, date FROM table1 WHERE tag = '1'
UNION ALL
SELECT id, article, author, tag, date FROM table2 WHERE tag = '3'
ORDER BY date

Вы также можете рассмотреть возможность реструктуризации базы данных, чтобы вместо использования двух таблиц вы использовали только одну таблицу с полем, чтобы различать тип каждой строки. Тогда запрос можно упростить до:

SELECT id, article, author, tag, date
FROM yourtable
WHERE (tag, type) IN (('1','type1'), ('3','type2'))
ORDER BY date
7 голосов
/ 17 марта 2011
SELECT * 
FROM   (SELECT * 
        FROM   table1 
        UNION 
        SELECT * 
        FROM   table2) t 
ORDER  BY t.DATE 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...