首頁  >  文章  >  資料庫  >  MySQL如何合併查詢結果

MySQL如何合併查詢結果

王林
王林轉載
2023-05-26 22:22:322758瀏覽

多條 SELECT 語句可以透過 UNION 關鍵字組合成單一結果集。合併 時,兩個表格對應的列數和資料型別必須相同。各個 SELECT 語句之間使用 UNION 或 UNION ALL 關鍵字分隔。 UNION 不使用關鍵字 ALL,執行的時候刪除重複的記錄,所有傳回的行都是唯一的; 使用關鍵字 ALL 的作用是不刪除重複行也不對結果自動排序。基本語法格式如下:

SELECT column,... FROM table1
UNION [ALL]
SELECT column,... FROM table2

查詢所有價格小於9 的水果的信息,查詢s_id 等於101 和103 所有的水果的信息, 使用UNION 連接查詢結果,SQL 語句如下: 

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);

 合併查詢結果如下:

MySQL如何合併查詢結果

UNION combines the results of multiple SELECT statements into a single result set, as mentioned previously.。可以分開查看每個SELECT 語句的結果: 

SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0;

MySQL如何合併查詢結果

SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);

MySQL如何合併查詢結果

 由分開查詢的結果可以看到,第1 個SELECT 語句查詢價格小於9 的水果,第2 條SELECT 語句查詢供應商101 和103 提供的水果。使用 UNION 將兩個 SELECT 語句分隔開,執行完畢之後 把輸出結果組合成單一的結果集,並刪除重複的記錄。

在前面的範例中,由於使用了 UNION ALL 包含重複的行,導致分開查詢時產生了相同的記錄。 UNION 從查詢結果集中自動移除了重複的行,如果要傳回所有符合行,而不進行刪除,可 使用 UNION ALL。

查詢所有價格小於9 的水果的信息,查詢s_id 等於101 和103 的所有水果的信息, 使用UNION ALL 連接查詢結果,SQL 語句如下:

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);

查詢結果如下:

MySQL如何合併查詢結果

由結果可以看到,這裡總的記錄數等於兩個SELECT 語句傳回的記錄數總和,連接查詢結果並沒有移除重複的行。

提示:UNION 和UNION ALL 的差異:使用UNION ALL 的功能是不刪除重複行,加上ALL 關鍵字語句執行時所需的資源少,所以盡可能使用它,因此知道有重複行但是想保留這些行,確定查詢結果中不會有重複資料或不需要去掉重複資料的時候,應使用UNION ALL 以提高查詢效率。 

#

以上是MySQL如何合併查詢結果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除