日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL 基础———— UNION 联合查询

發布時間:2025/3/12 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 基础———— UNION 联合查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

聯合查詢連接查詢不同,通過UNION 關鍵字,我們可以將多個查詢語句一同執行并將結果集展示出來,不涉及到任何關聯關系。

UNION 的含義是“聯合,并集,結合”,在MySQL中可以將多個查詢語句的結果合并成一個結果集,在MySQL 不支持FULL OUTER JOIN 的情況下,彌補了“并集” 查詢的短板。

連接查詢相關知識總結,參考《MySQL 基礎 ———— 連接查詢》。

一、UNION 介紹

UNION 查詢非常簡單,就是將多個SQL的結果取并集,適用于查詢多個功能含義比較類似的表或結果集,同時可以將一條比較復雜的SQL拆分成多條語句。

員工表:

學生表:

聯合查詢:?

SELECT emp_id 編號, emp_name 姓名, dept_id 所屬部門或班級 FROM emp UNION SELECT stu_id 編號, stu_name 姓名, class_id 所屬部門或班級 FROM student LIMIT 15

上面的SQL語句使用 UNION 關鍵字將emp 和 student 的查詢合并在了一起。如果希望合并多個查詢,就可以使用下面的格式進行合并:

查詢語句 1?

UNION

查詢語句 2

UNION

......

二、聯合查詢的規則

聯合查詢是有一定使用規則的,如果不加注意,MySQL就有可能執行報錯,或意義混亂

1、多條查詢語句的查詢列數必須保持一致,否則報錯。

2、多條查詢語句的列值類型順序最好保持一致。

3、UNION 關鍵字默認不查詢重復記錄,但只要有一個字段不一樣就認為是兩條記錄。

2.1 規則一:查詢列數必須保持一致

其實很好理解,如果要將兩個結果集合并,那么就需要將列數統一,MySQL對此作了嚴格的限制,不會以 NULL 值顯示沒有查詢該列的查詢記錄,這是為了保證數據的準確性,原因是 NULL 也是一種值

SELECT emp_id 編號, emp_name 姓名, dept_id 所屬部門或班級, manager_id FROM emp UNION SELECT stu_id 編號, stu_name 姓名, class_id 所屬部門或班級 FROM student

??

2.2 規則二:列值類型順序最好保持一致

“最好” 的意思是 “我們可以不這樣做,但皮一下并沒有什么意義”。

比如,我們將stu_name 與 class_id 調換順序:

SELECT emp_id 編號, emp_name 姓名, dept_id 所屬部門或班級 FROM emp UNION SELECT stu_id 編號, class_id 姓名, stu_name 所屬部門或班級 FROM student LIMIT 15

?MySQL雖然不會報錯,但結果已經不具有什么使用意義了。另外,列的別名其實并不需要完全統一,多條查詢語句中如果出現不統一的列名,MySQL會默認使用第一條查詢語句的列名。如:

SELECT emp_id 編號, emp_name 姓名, dept_id 所屬部門或班級 FROM emp UNION SELECT stu_id, stu_name, class_id FROM student LIMIT 15

但為了保證可讀性,建議為每條查詢語句指定相同的列名,保持統一格式。

2.3 規則三:UNION 默認去重

UNION 關鍵字不會查詢重復的記錄,但重復的記錄并不是簡簡單單的“看上去重復”或“主鍵重復”,記錄中只要有一個字段不一致,UNION 就會老老實實的將他們都查詢出來。

三、UNION 與 UNION ALL

UNION 關鍵字是去重的聯合查詢,如果非要將所有記錄都查詢出來,不忽略重復的記錄,那么可以使用 UNION ALL ,對比來看一下:

SELECT * FROM emp UNION SELECT * FROM emp

UNION 的結果:?

SELECT * FROM emp UNION ALL SELECT * FROM emp

UNION? ALL 的結果:

綜上,就是關于 UNION 聯合查詢的用法總結,歡迎文末留言。

?

總結

以上是生活随笔為你收集整理的MySQL 基础———— UNION 联合查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。