<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近幾年,MySQL 不斷致力於相容 SQL 標準。例如 MySQL 8.0 中的視窗函數、通用表表示式、檢查約束等等。
最新發布的 MySQL 8.0.31 繼續對 SQL 語句進行了增強,提供了缺失已久的兩個集合操作符:INTERSECT 和 EXCEPT。
INTERSECT 操作符用於返回兩個查詢結果中的共同部分,即同時出現在第一個查詢結果和第二個查詢結果中的資料,並且對最終結果進行了去重操作。交集運算的示意圖如下:
其中,1 和 2 是兩個查詢中都存在的資料;因此交集運算的結果只包含 1 和 2。
我們建立一個年度優秀員工表(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 年都是優秀員工的員工編號:
SELECT emp_id FROM excellent_emp WHERE year = 2018 INTERSECT SELECT emp_id FROM excellent_emp WHERE year = 2019; emp_id| ------| 9|
其中,INTERSECT 表示交集運算。第一個查詢語句返回了 9 和 11,第二個查詢語句返回了 9 和 20,最終結果返回共同的 9。集合操作返回的欄位名由第一個語句決定,此處兩個語句擁有相同的欄位名(emp_id)。
對於 MySQL 5.7 以及之前的版本,以上範例可以改寫為等價的連線查詢:
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|
交集運算都可以改寫為等價的等值內連線查詢。
INTERSECT 操作符的完整語法如下:
SELECT ... INTERSECT [ALL | DISTINCT] SELECT ... [INTERSECT [ALL | DISTINCT] SELECT ...]
ALL 選項表示保留查詢結果集中的重複記錄,DISTINCT 選項表示去除查詢結果集中的重複記錄,預設選項為 DISTINCT。
另外,INTERSECT 操作符的優先順序比 UNION 和 EXCEPT 更高,因此以下兩種寫法等價:
TABLE r EXCEPT TABLE s INTERSECT TABLE t; TABLE r EXCEPT (TABLE s INTERSECT TABLE t);
關於 INTERSECT 操作符的更多資訊,可以參考官方檔案。
EXCEPT 操作符用於返回出現在第一個查詢結果中,但不在第二個查詢結果中的記錄,並且對最終結果進行了去重操作。差集運算的示意圖如下:
第一個查詢的結果中只有 3 沒有出現在第二個查詢的結果中,因此差集運算的結果只保留了 3。
以下語句查詢 2019 年被評為優秀,但是 2018 年不是優秀的員工:
SELECT emp_id FROM excellent_emp WHERE year = 2019 EXCEPT SELECT emp_id FROM excellent_emp WHERE year = 2018; emp_id| ------| 20|
查詢結果顯示,只有 20 號員工是 2019 年新晉的優秀員工。
對於 MySQL 5.7 以及之前的版本,以上範例可以改寫為等價左外連線查詢:
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|
其中,左外連線返回了所有的優秀員工;然後利用 WHERE 條件找出其中 2019 年是優秀但 2018 年不是優秀的員工。
EXCEPT 操作符的完整語法如下:
SELECT ... EXCEPT [ALL | DISTINCT] SELECT ... [EXCEPT [ALL | DISTINCT] SELECT ...]
ALL 選項表示保留查詢結果集中的重複記錄,DISTINCT 選項表示去除查詢結果集中的重複記錄,預設選項為 DISTINCT。
關於 INTERSECT 操作符的更多資訊,可以參考官方檔案。
到此這篇關於MySQL 8.0新特性之集合操作符INTERSECT和EXCEPT的文章就介紹到這了,更多相關MySQL8.0 INTERSECT和EXCEPT內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45