您好,登錄后才能下訂單哦!
這篇文章主要介紹了SQL中的union和union all怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SQL中的union和union all怎么使用文章都會有所收獲,下面我們一起來看看吧。
MySQL UNION
操作符用于連接兩個以上的 SELECT
語句的結果組合到一個結果集合中。多個 SELECT
語句會刪除重復的數據。
UNION
操作符選取不同的值,如果允許得到重復的值,可以使用 UNION ALL
-- union SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; -- union all SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
注意:
UNION
內部的每個SELECT
語句必須擁有相同數量的列列也必須擁有相似的數據類型
每個
SELECT
語句中的列的順序必須相同
我們發現我們用 UNION
得到的結果都是必須是相同的,這就不得不提 in
和 or
這兩個關鍵字了
-- in select * from users where name in ('sbc', 'bhy'); -- or select * from users where name = 'sbc' or name = 'bhy'; select * from users where name = 'sbc' or tel = '123456'; -- union select * from users where name = 'sbc' union select * from users where name = 'bhy'; select * from users where name = 'sbc' union select * from users where tel = '123456';
通過在用戶表(users)這幾個select語句中我們比較一下
如果我們想要名字為 sbc 或者 bhy 的用戶我們可以用in
、or
和union
都可以實現
如果在較大的數據量下差距就會有明顯的差距,如果 name 字段存在索引,這幾種方法都是不分上下的;可是如果像 or
寫法的第二種情況,那數據庫都會去找兩個字段各自的索引嗎,答案不是的,數據庫只會尋找一個字段的索引,而另一個字段就需要全局查詢
這樣遇到較大的數據量就會耗費大量的時間,但是 union
方法的第二種方法就會引用兩次索引。
union
:對兩個結果集進行并集操作,不包括重復行,相當于distinct
,同時進行默認規則的排序
union all
:對兩個結果集進行并集操作,包括重復行,即所有的結果全部顯示,不管是不是重復;
tips
union all只是合并查詢結果,并不會進行去重和排序操作,在沒有去重的前提下,使用union all的執行效率要比union高
關于“SQL中的union和union all怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SQL中的union和union all怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。