Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I combine the results of two queries with ordering?

Tags:

sql

mysql

How do you join the results of 2 queries, ordering by date?

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

table1,table2 have the same fields: id|article|author|tag|date

PS: BY THE WAY, tag IS workid

like image 706
cj333 Avatar asked Mar 16 '11 21:03

cj333


2 Answers

You can use UNION ALL to get rows from both tables:

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

You may also want to consider restructuring your database so that instead of using two tables you use just a single table with a field to distinguish the type of each row. Then the query can simplify to:

SELECT id, article, author, tag, date
FROM yourtable
WHERE (tag, type) IN (('1','type1'), ('3','type2'))
ORDER BY date
like image 154
Mark Byers Avatar answered Oct 16 '22 07:10

Mark Byers


SELECT * 
FROM   (SELECT * 
        FROM   table1 
        UNION 
        SELECT * 
        FROM   table2) t 
ORDER  BY t.DATE 
like image 20
Pentium10 Avatar answered Oct 16 '22 08:10

Pentium10