Multiple SELECT statements can be combined into a single result set through the UNION keyword. When merging, the number of columns and data types corresponding to the two tables must be the same. Separate SELECT statements using the UNION or UNION ALL keyword. UNION does not use the keyword ALL, and duplicate records are deleted during execution, and all returned rows are unique; the function of using the keyword ALL is not to delete duplicate rows and not to automatically sort the results. The basic syntax format is as follows:
SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2
Query the information of all fruits with a price less than 9, query the information of all fruits with s_id equal to 101 and 103, use UNION to connect the query results, the SQL statement is as follows:
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
The combined query results are as follows:
UNION combines the results of multiple SELECT statements into a single result set, as mentioned previously.. You can view the results of each SELECT statement separately:
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0;
SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
You can see from the results of separate queries that the first SELECT statement To query the fruits whose price is less than 9, the second SELECT statement queries the fruits provided by suppliers 101 and 103. Use UNION to separate two SELECT statements. After execution, combine the output results into a single result set and delete duplicate records.
In the previous example, due to the use of UNION ALL to contain duplicate rows, the same records were generated when querying separately. UNION automatically removes duplicate rows from the query result set. If you want to return all matching rows without deletion, you can use UNION ALL.
Query the information of all fruits with a price less than 9, query the information of all fruits with s_id equal to 101 and 103, use UNION ALL to connect the query results, the SQL statement is as follows:
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION ALL SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
The query results are as follows:
As you can see from the results, the total number of records here is equal to the sum of the number of records returned by the two SELECT statements. The connection query results do not remove duplicate rows.
Tip: The difference between UNION and UNION ALL: The function of using UNION ALL is not to delete duplicate rows, plus the ALL keyword statement requires less resources when executing, so use it as much as possible. Therefore, when you know that there are duplicate rows but want to keep these rows, and make sure that there will be no duplicate data in the query results or there is no need to remove duplicate data, you should use UNION ALL to improve query efficiency.
The above is the detailed content of How to merge query results in MySQL. For more information, please follow other related articles on the PHP Chinese website!