您好,登錄后才能下訂單哦!
今天小編給大家分享一下MySQL如何合并查詢結果的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
利用 UNION 關鍵字,可以給出多條 SELECT 語句,并將它們的結果組合成單個結果集。合并 時,兩個表對應的列數和數據類型必須相同。各個 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);
合并查詢結果如下:
如前所述,UNION 將多個 SELECT 語句的結果組合成一個結果集合。可以分開查看每個 SELECT 語句的結果:
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);
由分開查詢的結果可以看到,第 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);
查詢結果如下:
由結果可以看到,這里總的記錄數等于兩條 SELECT 語句返回的記錄數之和,連接查詢結果 并沒有去除重復的行。
提 示 :UNION 和 UNION ALL 的區別:使用 UNION ALL 的功能是不刪除重復行,加上 ALL 關 鍵字語句執行時所需要的資源少,所以盡可能地使用它,因此知道有重復行但是想保留 這些行,確定查詢結果中不會有重復數據或者不需要去掉重復數據的時候,應當使用 UNION ALL 以提高查詢效率。
以上就是“MySQL如何合并查詢結果”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。