Collections:
Merge Outputs from Two Queries in MySQL
How To Use UNION to Merge Outputs from Two Queries Together in MySQL?
✍: FYIcenter.com
If you have two queries that returns the same row fields, you can merge their outputs together with the UNION operator. The following tutorial exercise shows you how to return all links that were created since year 2006 plus the one more link immediately before that:
mysql> SELECT id, url, created FROM fyi_links ORDER BY created DESC; +-----+-------------------+---------------------+ | id | url | created | +-----+-------------------+---------------------+ | 102 | dba.fyicenter.com | 2006-07-01 12:00:00 | | 103 | sqa.fyicenter.com | 2006-07-01 12:00:00 | | 101 | dev.fyicenter.com | 2006-04-30 00:00:00 | | 104 | www.mysql.com | 2006-01-01 00:00:00 | | 105 | www.oracle.com | 2005-01-01 00:00:00 | | 106 | www.php.net | 2004-01-01 00:00:00 | | 107 | www.winrunner.com | 2003-01-01 00:00:00 | +-----+-------------------+---------------------+ 7 rows in set (0.00 sec) mysql> SELECT id, url, created FROM fyi_links WHERE created > '2005-12-31' ORDER BY created DESC; +-----+-------------------+---------------------+ | id | url | created | +-----+-------------------+---------------------+ | 102 | dba.fyicenter.com | 2006-07-01 12:00:00 | | 103 | sqa.fyicenter.com | 2006-07-01 12:00:00 | | 101 | dev.fyicenter.com | 2006-04-30 00:00:00 | | 104 | www.mysql.com | 2006-01-01 00:00:00 | +-----+-------------------+---------------------+ 4 rows in set (0.00 sec) mysql> SELECT id, url, created FROM fyi_links WHERE created <= '2005-12-31' ORDER BY created DESC LIMIT 1; +-----+----------------+---------------------+ | id | url | created | +-----+----------------+---------------------+ | 105 | www.oracle.com | 2005-01-01 00:00:00 | +-----+----------------+---------------------+ 1 row in set (0.01 sec) mysql> (SELECT id, url, created FROM fyi_links WHERE created > '2005-12-31' ORDER BY created DESC) UNION (SELECT id, url, created FROM fyi_links WHERE created <= '2005-12-31' ORDER BY created DESC LIMIT 1); +-----+-------------------+---------------------+ | id | url | created | +-----+-------------------+---------------------+ | 101 | dev.fyicenter.com | 2006-04-30 00:00:00 | | 102 | dba.fyicenter.com | 2006-07-01 12:00:00 | | 103 | sqa.fyicenter.com | 2006-07-01 12:00:00 | | 104 | www.mysql.com | 2006-01-01 00:00:00 | | 105 | www.oracle.com | 2005-01-01 00:00:00 | +-----+-------------------+---------------------+ 5 rows in set (0.00 sec) mysql> (SELECT id, url, created FROM fyi_links WHERE created > '2005-12-31' ORDER BY created DESC) UNION (SELECT id, url, created FROM fyi_links WHERE created <= '2005-12-31' ORDER BY created DESC LIMIT 1) ORDER BY created DESC; +-----+-------------------+---------------------+ | id | url | created | +-----+-------------------+---------------------+ | 102 | dba.fyicenter.com | 2006-07-01 12:00:00 | | 103 | sqa.fyicenter.com | 2006-07-01 12:00:00 | | 101 | dev.fyicenter.com | 2006-04-30 00:00:00 | | 104 | www.mysql.com | 2006-01-01 00:00:00 | | 105 | www.oracle.com | 2005-01-01 00:00:00 | +-----+-------------------+---------------------+ 5 rows in set (0.00 sec)
Note that the UNION operator damaged the sorting order of each subquery. You need a final "ORDER BY" clause at the UNION level to sort the final output.
⇒ Managing User Accounts and Access Privileges in MySQL
⇐ Returning the Second 5 Rows in MySQL
2017-12-21, 2517🔥, 0💬
Popular Posts:
How To Create a Stored Program Unit in Oracle? If you want to create a stored program unit, you can ...
How To Divide Query Output into Multiple Groups with the GROUP BY Clause in SQL Server? Sometimes, y...
How To Use DATEADD() Function in SQL Server Transact-SQL? DATEADD() is a very useful function for ma...
How To Fix the INSERT Command Denied Error in MySQL? The reason for getting the "1142: INSERT comman...
What Are the Underflow and Overflow Behaviors on FLOAT Literals in SQL Server Transact-SQL? If you e...