欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL之union聯(lián)合查詢的實現(xiàn)

 更新時間:2024年04月19日 09:22:08   作者:白云如幻  
聯(lián)合查詢就是將多個查詢結(jié)果的結(jié)果集合并到一起,字段數(shù)不變,多個查詢結(jié)果的記錄數(shù)合并,本文主要介紹了MySQL之union聯(lián)合查詢的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

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

聯(lián)合查詢:

關(guān)鍵字union,作用就是將多條查詢語句的結(jié)果合并成一個結(jié)果集。

案例:(查詢部門編號大于100或名字中含有a字符的員工信息)

select * from employees where department_id>100 or last_name like '%a%';

用聯(lián)合查詢演示:

select * from employees where department_id>100
union
select * from employees where last_name like '%a%';

union是應(yīng)用場景:

比如在我們有個數(shù)據(jù)庫中的老師表和學(xué)生表,兩者之間沒有直接的關(guān)聯(lián)關(guān)系,但是又有一些共通性,但是現(xiàn)在我們想要查詢學(xué)校所有男老師和男學(xué)生的信息(學(xué)生和老師的編號,姓名,出現(xiàn)日期,性別),這個時候就是應(yīng)用union的時候。

SELECT `tno` 編號,`tname`,`tsex`,`tbirthday`
FROM `teachers`
WHERE `tsex`='男'
UNION
SELECT `sno`,`sname`,`ssex`,`sbirthday`
FROM `students`
WHERE `ssex`='男';

聯(lián)合查詢的特點:

  • 聯(lián)合查詢的兩個子查詢的查詢字段個數(shù)要一致
  • 要求聯(lián)合查詢的子查詢的查詢列表順序要在內(nèi)容上保持一致
  • 使用union聯(lián)合默認(rèn)會自動去重,如果不想去重可以將union改為union all

聯(lián)合查詢的規(guī)則

聯(lián)合查詢是有一定使用規(guī)則的,如果不加注意,MySQL就有可能執(zhí)行報錯,或意義混亂

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

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

3、UNION 關(guān)鍵字默認(rèn)不查詢重復(fù)記錄,但只要有一個字段不一樣就認(rèn)為是兩條記錄。

規(guī)則一:查詢列數(shù)必須保持一致

其實很好理解,如果要將兩個結(jié)果集合并,那么就需要將列數(shù)統(tǒng)一,MySQL對此作了嚴(yán)格的限制,不會以 NULL 值顯示沒有查詢該列的查詢記錄,這是為了保證數(shù)據(jù)的準(zhǔn)確性,原因是 NULL 也是一種值。

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

規(guī)則二:列值類型和順序最好保持一致

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

比如,我們將stu_name 與 class_id 調(diào)換順序:

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

 MySQL雖然不會報錯,但結(jié)果已經(jīng)不具有什么使用意義了。另外,列的別名其實并不需要完全統(tǒng)一,多條查詢語句中如果出現(xiàn)不統(tǒng)一的列名,MySQL會默認(rèn)使用第一條查詢語句的列名。如:

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

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

規(guī)則三:UNION 默認(rèn)去重

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

UNION 與 UNION ALL

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

SELECT * FROM emp
UNION 
SELECT * FROM emp

UNION 的結(jié)果: 

SELECT * FROM emp
UNION ALL
SELECT * FROM emp

UNION  ALL 的結(jié)果:

到此這篇關(guān)于MySQL之union聯(lián)合查詢的實現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL union聯(lián)合查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Mysql悲觀鎖和樂觀鎖的使用示例

    Mysql悲觀鎖和樂觀鎖的使用示例

    這篇文章主要給大家介紹了關(guān)于Mysql悲觀鎖和樂觀鎖使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Windows系統(tǒng)下MySQL8.0.21安裝教程(圖文詳解)

    Windows系統(tǒng)下MySQL8.0.21安裝教程(圖文詳解)

    這篇文章主要介紹了Windows系統(tǒng)下MySQL8.0.21安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 使用Mysql5.x以上版本出現(xiàn)報錯#1929 Incorrect datetime value: '''''''' for column ''''createtime''''的快速解決方法

    使用Mysql5.x以上版本出現(xiàn)報錯#1929 Incorrect datetime value: '''''''' f

    我的MySQL安裝后,保存刪除表數(shù)據(jù)總是出現(xiàn)#1929 Incorrect datetime value: '' for column 'createtime' 的報錯提醒,導(dǎo)致不能刪除表里數(shù)據(jù)。下面小編給大家分析原因及解決辦法,需要的朋友可以參考下
    2017-01-01
  • 解決hibernate+mysql寫入數(shù)據(jù)庫亂碼

    解決hibernate+mysql寫入數(shù)據(jù)庫亂碼

    初次沒習(xí)hibernate,其中遇到問題在網(wǎng)上找的答案與大家共同分享!
    2009-07-07
  • MySQL <>和<=> 運算符介紹

    MySQL <>和<=> 運算符介紹

    這篇文章主要介紹了MySQL <>和<=> 運算符介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MySQL中查看數(shù)據(jù)庫安裝路徑的方法

    MySQL中查看數(shù)據(jù)庫安裝路徑的方法

    有時候在我們開發(fā)的過程中并不一定記得數(shù)據(jù)庫的安裝路徑,比如要查看mysql 數(shù)據(jù)庫的安裝目錄在哪里,這里就為大家分享一下
    2021-03-03
  • MySQL中慢SQL的監(jiān)控與優(yōu)化技巧

    MySQL中慢SQL的監(jiān)控與優(yōu)化技巧

    當(dāng)你的應(yīng)用越來越慢,用戶開始抱怨卡頓,數(shù)據(jù)庫CPU飆升到100%——很可能就是慢SQL在作祟!別擔(dān)心,今天我將帶你從零開始掌握MySQL慢SQL的監(jiān)控與優(yōu)化技巧,讓你的數(shù)據(jù)庫性能提升10倍,需要的朋友可以參考下
    2025-08-08
  • MySQL觸發(fā)器的應(yīng)用示例詳解

    MySQL觸發(fā)器的應(yīng)用示例詳解

    這篇文章主要介紹了MySQL觸發(fā)器的應(yīng)用,觸發(fā)器是與MySQL數(shù)據(jù)表有關(guān)的數(shù)據(jù)庫對象,在滿足定義條件時觸發(fā),并執(zhí)行觸發(fā)器中定義的語句集合,觸發(fā)器的這種特性可以協(xié)助應(yīng)用在數(shù)據(jù)庫端確保數(shù)據(jù)的完整性,需要的朋友可以參考下
    2022-08-08
  • MySQL啟動失敗報錯:mysqld.service failed to run ‘start-pre‘ task的問題分析與解決方案

    MySQL啟動失敗報錯:mysqld.service failed to run 

    在日常運維中,MySQL 作為廣泛應(yīng)用的關(guān)系型數(shù)據(jù)庫,其穩(wěn)定性和可用性至關(guān)重要,然而,有時系統(tǒng)升級或配置變更后,MySQL 服務(wù)可能會出現(xiàn)無法啟動的問題,本文針對某次實際案例進(jìn)行深入分析和處理,需要的朋友可以參考下
    2024-12-12
  • MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的用法解讀

    MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的用法解讀

    這篇文章主要介紹了MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06

最新評論