最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單聊一聊SQL中的union和union?all

 更新時間:2023年02月22日 10:27:13   作者:Java技術債務  
在寫SQL的時候,偶爾會用到兩個表的數(shù)據(jù)結合在一起返回的,就需要用到UNION 和 UNION ALL,這篇文章主要給大家介紹了關于SQL中union和union?all的相關資料,需要的朋友可以參考下

概念

MySQL UNION 操作符用于連接兩個以上的 SELECT 語句的結果組合到一個結果集合中。多個 SELECT 語句會刪除重復的數(shù)據(jù)。

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 內(nèi)部的每個 SELECT 語句必須擁有相同數(shù)量的列

列也必須擁有相似的數(shù)據(jù)類型

每個 SELECT 語句中的列的順序必須相同

使用技巧

我們發(fā)現(xiàn)我們用 UNION 得到的結果都是必須是相同的,這就不得不提 inor 這兩個關鍵字了

-- 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、orunion都可以實現(xiàn)

如果在較大的數(shù)據(jù)量下差距就會有明顯的差距,如果 name 字段存在索引,這幾種方法都是不分上下的;可是如果像 or 寫法的第二種情況,那數(shù)據(jù)庫都會去找兩個字段各自的索引嗎,答案不是的,數(shù)據(jù)庫只會尋找一個字段的索引,而另一個字段就需要全局查詢

這樣遇到較大的數(shù)據(jù)量就會耗費大量的時間,但是 union 方法的第二種方法就會引用兩次索引。

區(qū)別

  • union :對兩個結果集進行并集操作,不包括重復行,相當于distinct,同時進行默認規(guī)則的排序
  • union all:對兩個結果集進行并集操作,包括重復行,即所有的結果全部顯示,不管是不是重復;

tips
union all只是合并查詢結果,并不會進行去重和排序操作,在沒有去重的前提下,使用union all的執(zhí)行效率要比union高

總結

如果遇到?jīng)]有索引的表或者只對單個字段進行篩選,其實推薦使用 or 和 in ,看上去優(yōu)雅簡潔

如果遇到多個索引列的情況,還是推薦使用 union 和 union all

到此這篇關于SQL中union和union all的文章就介紹到這了,更多相關SQL中union和union all內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mysql?InnoDB?的內(nèi)存結構詳情

    Mysql?InnoDB?的內(nèi)存結構詳情

    這篇文章主要介紹了Mysql InnoDB的內(nèi)存結構詳情,InnoDB存儲引擎的邏輯存儲結構是什么呢,下面我們就一起進入文章了解更多詳細內(nèi)容吧,感興趣的小伙伴可以參考一下
    2022-05-05
  • mysql建表常用sql語句個人經(jīng)驗分享

    mysql建表常用sql語句個人經(jīng)驗分享

    熟悉一些常用的建表語句可以提升你建表的速度效率,本文整理了一些,個人感覺還不錯,希望對大家有所幫助
    2014-01-01
  • 詳解MySQL性能優(yōu)化(二)

    詳解MySQL性能優(yōu)化(二)

    本文對MySQL性能優(yōu)化進行了詳細的總結與介紹,需要的朋友可以參考下
    2015-08-08
  • Mysql 取字段值逗號第一個數(shù)據(jù)的查詢語句

    Mysql 取字段值逗號第一個數(shù)據(jù)的查詢語句

    Mysql 取字段值逗號第一個數(shù)據(jù),在某些情況下還是比較實用的,主要使用到了left函數(shù)及其他等等,感興趣的朋友可以參考下
    2013-10-10
  • MySql insert插入操作的3個小技巧分享

    MySql insert插入操作的3個小技巧分享

    這篇文章主要介紹了MySql insert插入操作的3個小技巧分享,本文講解了插入的數(shù)據(jù)來源自其他表、插入時排除(忽略)重復記錄、插入時遇到重復記錄做更新操作三個小技巧,需要的朋友可以參考下
    2015-03-03
  • MySQL查詢中LIMIT的大offset導致性能低下淺析

    MySQL查詢中LIMIT的大offset導致性能低下淺析

    這篇文章主要給大家介紹了關于MySQL查詢中LIMIT的大offset導致性能低下的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Mysql查詢表中最小可用id值的方法

    Mysql查詢表中最小可用id值的方法

    這篇文章主要介紹了Mysql查詢表中最小可用id值的方法,在文中通過sql語句給大家介紹了MySQL中刪除id為最小的數(shù)據(jù),需要的朋友可以參考下
    2018-10-10
  • MySQL錯誤代碼3140:無效的JSON文本編碼問題解決辦法

    MySQL錯誤代碼3140:無效的JSON文本編碼問題解決辦法

    下面這篇文章主要給大家介紹了關于MySQL錯誤代碼3140:無效的JSON文本編碼問題的解決辦法,文中通過代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-03-03
  • 阿里云ECS云服務器(linux系統(tǒng))安裝mysql后遠程連接不了(踩坑)

    阿里云ECS云服務器(linux系統(tǒng))安裝mysql后遠程連接不了(踩坑)

    這篇文章主要介紹了阿里云ECS云服務器(linux系統(tǒng))安裝mysql后遠程連接不了(踩坑),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Mysql中的自連接問題

    Mysql中的自連接問題

    這篇文章主要介紹了Mysql中的自連接問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論

桂林市| 民丰县| 环江| 八宿县| 吴忠市| 嘉荫县| 巨野县| 大安市| 永吉县| 敦煌市| 民权县| 天台县| 阿拉善左旗| 保靖县| 香格里拉县| 长葛市| 南投市| 广饶县| 嘉峪关市| 天气| 卓尼县| 鲁山县| 平湖市| 游戏| 锡林浩特市| 濉溪县| 康乐县| 乐东| 固安县| 福建省| 利川市| 合阳县| 津市市| 抚远县| 前郭尔| 大余县| 故城县| 枣阳市| 南康市| 青铜峡市| 科技|