溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL如何合并查詢結(jié)果

發(fā)布時間:2023-03-30 13:58:03 來源:億速云 閱讀:99 作者:iii 欄目:MySQL數(shù)據(jù)庫

今天小編給大家分享一下MySQL如何合并查詢結(jié)果的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

利用 UNION 關(guān)鍵字,可以給出多條 SELECT 語句,并將它們的結(jié)果組合成單個結(jié)果集。合并 時,兩個表對應(yīng)的列數(shù)和數(shù)據(jù)類型必須相同。各個 SELECT 語句之間使用 UNION 或 UNION ALL 關(guān)鍵字分隔。UNION 不使用關(guān)鍵字 ALL,執(zhí)行的時候刪除重復(fù)的記錄,所有返回的行都是唯一的; 使用關(guān)鍵字 ALL 的作用是不刪除重復(fù)行也不對結(jié)果進行自動排序。基本語法格式如下:

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

查詢所有價格小于 9 的水果的信息,查詢 s_id 等于 101 和 103 所有的水果的信息, 使用 UNION 連接查詢結(jié)果,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);

 合并查詢結(jié)果如下:

MySQL如何合并查詢結(jié)果

如前所述,UNION 將多個 SELECT 語句的結(jié)果組合成一個結(jié)果集合??梢苑珠_查看每個 SELECT 語句的結(jié)果: 

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

MySQL如何合并查詢結(jié)果

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

MySQL如何合并查詢結(jié)果

 由分開查詢的結(jié)果可以看到,第 1 條 SELECT 語句查詢價格小于 9 的水果,第 2 條 SELECT 語句查詢供應(yīng)商 101 和 103 提供的水果。使用 UNION 將兩條 SELECT 語句分隔開,執(zhí)行完畢之后 把輸出結(jié)果組合成單個的結(jié)果集,并刪除重復(fù)的記錄。

使用 UNION ALL 包含重復(fù)的行,在前面的例子中,分開查詢時,兩個返回結(jié)果中有相同的 記錄。UNION 從查詢結(jié)果集中自動去除了重復(fù)的行,如果要返回所有匹配行,而不進行刪除,可 以使用 UNION ALL。

查詢所有價格小于 9 的水果的信息,查詢 s_id 等于 101 和 103 的所有水果的信息, 使用 UNION ALL 連接查詢結(jié)果,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);

查詢結(jié)果如下:

MySQL如何合并查詢結(jié)果

由結(jié)果可以看到,這里總的記錄數(shù)等于兩條 SELECT 語句返回的記錄數(shù)之和,連接查詢結(jié)果 并沒有去除重復(fù)的行。

提 示 :UNION 和 UNION ALL 的區(qū)別:使用 UNION ALL 的功能是不刪除重復(fù)行,加上 ALL 關(guān) 鍵字語句執(zhí)行時所需要的資源少,所以盡可能地使用它,因此知道有重復(fù)行但是想保留 這些行,確定查詢結(jié)果中不會有重復(fù)數(shù)據(jù)或者不需要去掉重復(fù)數(shù)據(jù)的時候,應(yīng)當使用 UNION ALL 以提高查詢效率。 

以上就是“MySQL如何合并查詢結(jié)果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI