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

mysql 如何獲取兩個集合的交集/差集/并集

 更新時間:2021年06月08日 15:07:45   作者:ColdFireMan  
這篇文章主要介紹了mysql獲取兩個集合的交集/差集/并集操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mysql的常見場景,獲取兩個數(shù)據(jù)集的交集和差集

步驟

1、兩個集合的結(jié)構(gòu)要一致,對應(yīng)的字段數(shù),字段類型

2、將兩個集合用 UNION ALL 關(guān)鍵字合并,這里的結(jié)果是有重復(fù)的所有集

3、將上面的所有集 GROUP BY id

4、最后 HAVING COUNT(id)=1,等于1的意思是只出現(xiàn)了一次,所以這個是差集,如果等于2,那么就是交集

代碼演示

差集

下面的sql有明顯的問題,不過這個只是一個示意,

從一個表中查詢不需要用到交集和差集,條件可以合并在一起直接查詢出來的.能明白意思就好

下面的sql的意思是找到所有非技術(shù)部的員工的id,code和name

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp
    UNION ALL
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=1

交集

下面的sql的意思是找到所有技術(shù)部年齡大于25的員工

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp WHERE age>25
    UNION ALL
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=2

并集

下面的sql的意思是找到所有技術(shù)部的員工和年齡大于30的員工

union可以自動去除重復(fù)的內(nèi)容,得到不重復(fù)的結(jié)果集

SELECT a.* FROM(
    SELECT id,code,name FROM test_emp WHERE age>25
    UNION
    SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a

mysql中交集,并集,差集,左連接,右連接

學(xué)習(xí)mysql也有一個月啦,在這個月中,都是按照需求對數(shù)據(jù)表進行一些基本操作,在這個過程當(dāng)中,經(jīng)常使用到左連接,右連接,交集,取差集等,現(xiàn)在對其基本操作進行歸納總結(jié)。

數(shù)據(jù)源:

表一:

id name sex age

1 mike1男 34
1 mike2 男 23
1 mike3 女 24
2 mike1 男 46
2 mike2 男 35
2 mike3 男 42
2 mike4 男 62
3 mike1 女 45
4 mike5 男 72
5 mike4 女 23

表二:

id school

1 北京大學(xué)

2 清華大學(xué)

3 哈佛大學(xué)

7 MIT

左連接:

根據(jù)某個等值條件,對表進行連接。本實驗是在id相同的情況下進行左連接

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

結(jié)果如下:以表1為根基,對表2進行連接,匹配相同的id號

右連接:

以表2為根基,通過id相同的字段對其進行右連接。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
right JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

結(jié)果:

你們覺得結(jié)果是有問題還是沒有問題呢?

交集:

通過id號相同,對表1和表2進行內(nèi)連接,取相同的部分,不相同的部分省略掉。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
inner JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

結(jié)果:

差集:

差集用的還是比較多的,類似于我們數(shù)學(xué)中學(xué)的,交、合、并等集合的操作。

code1:取表2與表1相同的部分,是我們上面取交集的第二種方法。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS NOT null

結(jié)果:

code2:取表1中的id在表2中的id的差值,最后列出數(shù)據(jù)。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS  null

結(jié)果:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 數(shù)據(jù)庫管理中19個MySQL優(yōu)化方法

    數(shù)據(jù)庫管理中19個MySQL優(yōu)化方法

    小編給大家總結(jié)了19條非常實用的MySQL數(shù)據(jù)庫優(yōu)化方法,這是每個服務(wù)器管理人員都必須知道的,一起學(xué)習(xí)下。
    2017-11-11
  • MySQL約束constraint用法詳解

    MySQL約束constraint用法詳解

    大家都知道MySQL中經(jīng)常會需要創(chuàng)建父子表之間的約束,下面這篇文章主要給大家介紹了關(guān)于MySQL約束constraint用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySql實現(xiàn)分布式鎖詳解

    MySql實現(xiàn)分布式鎖詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用本地MySql實現(xiàn)一把分布式鎖,以及Mysql實現(xiàn)分布式鎖的原理是怎么樣的,有需要的小伙伴可以了解下
    2024-11-11
  • Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    這篇文章主要介紹了Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied解決

    MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied解決

    今天給新電腦安裝了mysql,本來好好的,卻報了個bug,就記錄下吧,這篇文章主要給大家介紹了關(guān)于MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied的解決辦法,需要的朋友可以參考下
    2023-03-03
  • Mac下忘記Mysql的root用戶密碼的解決方法

    Mac下忘記Mysql的root用戶密碼的解決方法

    mac中安裝MySQL時系統(tǒng)會自動為root 賬戶生成一個密碼(改密碼一般為一個不好記的字符串),若自己沒有記住改密碼,這時 mysql 就無法進入了。解決方案是修改root 賬戶的密碼,問題是mysql進不去如何修改,下面就是改問題的解決方法:
    2017-03-03
  • MySQL8.x msi版安裝教程圖文詳解

    MySQL8.x msi版安裝教程圖文詳解

    這篇文章主要介紹了MySQL8.x msi版安裝教程 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Linux centos7環(huán)境下MySQL安裝教程

    Linux centos7環(huán)境下MySQL安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下MySQL安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • mysql數(shù)據(jù)庫中的索引類型和原理解讀

    mysql數(shù)據(jù)庫中的索引類型和原理解讀

    這篇文章主要介紹了mysql數(shù)據(jù)庫中的索引類型和原理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL重命名表名的實現(xiàn)示例

    MySQL重命名表名的實現(xiàn)示例

    在MySQL中,可以通過RENAMETABLE和ALTERTABLE命令來重命名表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評論

太原市| 襄樊市| 普安县| 高陵县| 麦盖提县| 资中县| 舟山市| 左权县| 瓮安县| 东阿县| 务川| 宜章县| 云阳县| 阿城市| 白玉县| 泊头市| 盐池县| 彭山县| 黔南| 界首市| 苍梧县| 诸城市| 阿瓦提县| 溧水县| 新乡县| 察雅县| 达日县| 定陶县| 贵德县| 长阳| 文登市| 阜平县| 深州市| 阿荣旗| 鄂托克前旗| 秦安县| 浦江县| 都昌县| 连城县| 永康市| 右玉县|