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

MySQL?8.0新特性之集合操作符INTERSECT和EXCEPT

 更新時(shí)間:2022年10月24日 09:23:41   作者:不剪發(fā)的Tony老師  
MySQL8.0.31版本開(kāi)始支持了INTERSECT(交集)和EXCEPT(差集)運(yùn)算,INTERSECT返回兩個(gè)結(jié)果集中都包含的行,EXCEPT返回左側(cè)結(jié)果集存在,右側(cè)不存在的行,這篇文章主要給大家介紹了關(guān)于MySQL?8.0新特性之集合操作符INTERSECT和EXCEPT的相關(guān)資料,需要的朋友可以參考下

前言

最近幾年,MySQL 不斷致力于兼容 SQL 標(biāo)準(zhǔn)。例如 MySQL 8.0 中的窗口函數(shù)、通用表表達(dá)式、檢查約束等等。

最新發(fā)布的 MySQL 8.0.31 繼續(xù)對(duì) SQL 語(yǔ)句進(jìn)行了增強(qiáng),提供了缺失已久的兩個(gè)集合操作符:INTERSECT 和 EXCEPT。

交集操作符(INTERSECT)

INTERSECT 操作符用于返回兩個(gè)查詢(xún)結(jié)果中的共同部分,即同時(shí)出現(xiàn)在第一個(gè)查詢(xún)結(jié)果和第二個(gè)查詢(xún)結(jié)果中的數(shù)據(jù),并且對(duì)最終結(jié)果進(jìn)行了去重操作。交集運(yùn)算的示意圖如下:

其中,1 和 2 是兩個(gè)查詢(xún)中都存在的數(shù)據(jù);因此交集運(yùn)算的結(jié)果只包含 1 和 2。

我們創(chuàng)建一個(gè)年度優(yōu)秀員工表(excellent_emp),用于演示集合操作:

CREATE TABLE excellent_emp(
    year   INT NOT NULL, 
    emp_id INTEGER NOT NULL,
    CONSTRAINT pk_excellent_emp PRIMARY KEY (YEAR, emp_id)
);
 
INSERT INTO excellent_emp VALUES (2018, 9);
INSERT INTO excellent_emp VALUES (2018, 11);
INSERT INTO excellent_emp VALUES (2019, 9);
INSERT INTO excellent_emp VALUES (2019, 20);

以下示例用于查找 2018 年和 2019 年都是優(yōu)秀員工的員工編號(hào):

SELECT emp_id
  FROM excellent_emp
 WHERE year = 2018
INTERSECT
SELECT emp_id
  FROM excellent_emp
 WHERE year = 2019;
 
emp_id|
------|
     9|

其中,INTERSECT 表示交集運(yùn)算。第一個(gè)查詢(xún)語(yǔ)句返回了 9 和 11,第二個(gè)查詢(xún)語(yǔ)句返回了 9 和 20,最終結(jié)果返回共同的 9。集合操作返回的字段名由第一個(gè)語(yǔ)句決定,此處兩個(gè)語(yǔ)句擁有相同的字段名(emp_id)。

對(duì)于 MySQL 5.7 以及之前的版本,以上示例可以改寫(xiě)為等價(jià)的連接查詢(xún):

SELECT t1.emp_id
  FROM excellent_emp t1
  JOIN excellent_emp t2
    ON (t1.emp_id = t2.emp_id
        AND t1.year = 2018
        AND t2.year = 2019);
 
emp_id|
------|
     9|

交集運(yùn)算都可以改寫(xiě)為等價(jià)的等值內(nèi)連接查詢(xún)。

INTERSECT 操作符的完整語(yǔ)法如下:

SELECT ...
INTERSECT [ALL | DISTINCT] SELECT ...
[INTERSECT [ALL | DISTINCT] SELECT ...]

ALL 選項(xiàng)表示保留查詢(xún)結(jié)果集中的重復(fù)記錄,DISTINCT 選項(xiàng)表示去除查詢(xún)結(jié)果集中的重復(fù)記錄,默認(rèn)選項(xiàng)為 DISTINCT。

另外,INTERSECT 操作符的優(yōu)先級(jí)比 UNION 和 EXCEPT 更高,因此以下兩種寫(xiě)法等價(jià):

TABLE r EXCEPT TABLE s INTERSECT TABLE t;

TABLE r EXCEPT (TABLE s INTERSECT TABLE t);

關(guān)于 INTERSECT 操作符的更多信息,可以參考官方文檔。

差集操作符(EXCEPT)

EXCEPT 操作符用于返回出現(xiàn)在第一個(gè)查詢(xún)結(jié)果中,但不在第二個(gè)查詢(xún)結(jié)果中的記錄,并且對(duì)最終結(jié)果進(jìn)行了去重操作。差集運(yùn)算的示意圖如下:

第一個(gè)查詢(xún)的結(jié)果中只有 3 沒(méi)有出現(xiàn)在第二個(gè)查詢(xún)的結(jié)果中,因此差集運(yùn)算的結(jié)果只保留了 3。

以下語(yǔ)句查找 2019 年被評(píng)為優(yōu)秀,但是 2018 年不是優(yōu)秀的員工:

SELECT emp_id
  FROM excellent_emp
 WHERE year = 2019
EXCEPT
SELECT emp_id
  FROM excellent_emp
 WHERE year = 2018;
 
emp_id|
------|
    20|

查詢(xún)結(jié)果顯示,只有 20 號(hào)員工是 2019 年新晉的優(yōu)秀員工。

對(duì)于 MySQL 5.7 以及之前的版本,以上示例可以改寫(xiě)為等價(jià)左外連接查詢(xún):

SELECT t1.emp_id
  FROM excellent_emp t1
  LEFT JOIN excellent_emp t2 ON (t1.emp_id = t2.emp_id AND t2.year = 2018)
 WHERE t1.year = 2019
   AND t2.emp_id IS NULL;
 
emp_id|
------|
    20|

其中,左外連接返回了所有的優(yōu)秀員工;然后利用 WHERE 條件找出其中 2019 年是優(yōu)秀但 2018 年不是優(yōu)秀的員工。

EXCEPT 操作符的完整語(yǔ)法如下:

SELECT ...
EXCEPT [ALL | DISTINCT] SELECT ...
[EXCEPT [ALL | DISTINCT] SELECT ...]

ALL 選項(xiàng)表示保留查詢(xún)結(jié)果集中的重復(fù)記錄,DISTINCT 選項(xiàng)表示去除查詢(xún)結(jié)果集中的重復(fù)記錄,默認(rèn)選項(xiàng)為 DISTINCT。

關(guān)于 INTERSECT 操作符的更多信息,可以參考官方文檔。

總結(jié)

到此這篇關(guān)于MySQL 8.0新特性之集合操作符INTERSECT和EXCEPT的文章就介紹到這了,更多相關(guān)MySQL8.0 INTERSECT和EXCEPT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 超詳細(xì)mysql left join,right join,inner join用法分析

    超詳細(xì)mysql left join,right join,inner join用法分析

    比較詳細(xì)的mysql的幾種連接功能分析,只要你看完就能學(xué)會(huì)的好東西
    2008-08-08
  • MySQL gh-ost DDL 變更工具的實(shí)現(xiàn)

    MySQL gh-ost DDL 變更工具的實(shí)現(xiàn)

    本文主要介紹了MySQL gh-ost DDL變更工具的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • mysql 5.7.5 m15 winx64.zip安裝教程

    mysql 5.7.5 m15 winx64.zip安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.5 m15 winx64.zip安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MySQL安全設(shè)置圖文教程

    MySQL安全設(shè)置圖文教程

    MySQL安全設(shè)置,跟mssql差不多都是以普通用戶(hù)權(quán)限運(yùn)行mysql。其它的也需要注意下。
    2011-01-01
  • gearman + mysql方式實(shí)現(xiàn)持久化操作示例

    gearman + mysql方式實(shí)現(xiàn)持久化操作示例

    這篇文章主要介紹了gearman + mysql方式實(shí)現(xiàn)持久化操作,簡(jiǎn)單描述了持久化的概念、原理,并結(jié)合實(shí)例形式分析了gearman + mysql持久化操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • win7下mysql5.7.17安裝配置方法圖文教程

    win7下mysql5.7.17安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了win7下mysql5.7.17安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • CentOS Linux更改MySQL數(shù)據(jù)庫(kù)目錄位置具體操作

    CentOS Linux更改MySQL數(shù)據(jù)庫(kù)目錄位置具體操作

    由于MySQL的數(shù)據(jù)庫(kù)太大,默認(rèn)安裝的/var盤(pán)已經(jīng)再也無(wú)法容納新增加的數(shù)據(jù),沒(méi)有辦法,只能想辦法轉(zhuǎn)移數(shù)據(jù)的目錄,本文整理了一些MySQL從/var/lib/mysql目錄下面轉(zhuǎn)移到/home/mysql_data/mysql目錄的具體操作,感興趣的你可不要走開(kāi)啊
    2013-01-01
  • 安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決

    安裝mysql出錯(cuò)”A Windows service with the name MySQL already exis

    這篇文章主要介紹了安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決的相關(guān)資料,在日常項(xiàng)目中此問(wèn)題比較多見(jiàn),特此把解決辦法分享給大家,供大家參考
    2016-05-05
  • MySQL中crash safe數(shù)據(jù)完整性機(jī)制面試精講

    MySQL中crash safe數(shù)據(jù)完整性機(jī)制面試精講

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)完整性crash safe特性面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • MySQL慢查詢(xún)?nèi)罩?Slow Query Log)的實(shí)現(xiàn)

    MySQL慢查詢(xún)?nèi)罩?Slow Query Log)的實(shí)現(xiàn)

    慢查詢(xún)?nèi)罩居脕?lái)記錄在 MySQL 中執(zhí)行時(shí)間超過(guò)指定時(shí)間的查詢(xún)語(yǔ)句,本文就來(lái)介紹一下MySQL慢查詢(xún)?nèi)罩?nbsp;的使用,感興趣的可以了解一下
    2024-08-08

最新評(píng)論

鄱阳县| 登封市| 涞水县| 浦东新区| 北票市| 尤溪县| 桐城市| 太保市| 彭山县| 赤水市| 沙田区| 民权县| 施甸县| 华阴市| 鄄城县| 九龙县| 二连浩特市| 陆丰市| 灵山县| 凯里市| 桃江县| 左云县| 莱芜市| 柘荣县| 黑水县| 金平| 柳河县| 武邑县| 洪泽县| 长治县| 洛浦县| 敦煌市| 永州市| 武夷山市| 通许县| 德清县| 娄烦县| 普兰县| 西林县| 铁岭市| 简阳市|