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

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

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

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

聯(lián)合查詢:

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

案例:(查詢部門(mén)編號(hào)大于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)用場(chǎng)景:

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

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

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

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

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

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

1、多條查詢語(yǔ)句的查詢列數(shù)必須保持一致,否則報(bào)錯(cuò)。

2、多條查詢語(yǔ)句的列值類(lèi)型順序最好保持一致。

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

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

其實(shí)很好理解,如果要將兩個(gè)結(jié)果集合并,那么就需要將列數(shù)統(tǒng)一,MySQL對(duì)此作了嚴(yán)格的限制,不會(huì)以 NULL 值顯示沒(méi)有查詢?cè)摿械牟樵冇涗?,這是為了保證數(shù)據(jù)的準(zhǔn)確性,原因是 NULL 也是一種值。

SELECT emp_id 編號(hào), emp_name 姓名, dept_id 所屬部門(mén)或班級(jí), manager_id FROM emp
UNION
SELECT stu_id 編號(hào), stu_name 姓名, class_id 所屬部門(mén)或班級(jí) FROM student

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

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

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

SELECT emp_id 編號(hào), emp_name 姓名, dept_id 所屬部門(mén)或班級(jí) FROM emp
UNION
SELECT stu_id 編號(hào), class_id 姓名, stu_name 所屬部門(mén)或班級(jí) FROM student
LIMIT 15

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

SELECT emp_id 編號(hào), emp_name 姓名, dept_id 所屬部門(mén)或班級(jí) FROM emp
UNION
SELECT stu_id, stu_name, class_id FROM student
LIMIT 15

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

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

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

UNION 與 UNION ALL

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

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)合查詢的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL union聯(lián)合查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • MySQL如何添加環(huán)境變量和初始化MySQL

    MySQL如何添加環(huán)境變量和初始化MySQL

    本文主要介紹了如何在Windows系統(tǒng)中添加MySQL的環(huán)境變量以及如何初始化MySQL,通過(guò)添加環(huán)境變量,可以在任意一個(gè)命令提示符中直接調(diào)用MySQL的相關(guān)程序,大大簡(jiǎn)化了操作,初始化MySQL時(shí),需要新建一個(gè)配置文件并指定默認(rèn)編碼集和存儲(chǔ)引擎,如果初始化過(guò)程中出現(xiàn)錯(cuò)誤
    2024-11-11
  • mysql 5.7.17 安裝配置方法圖文教程(ubuntu 16.04)

    mysql 5.7.17 安裝配置方法圖文教程(ubuntu 16.04)

    這篇文章主要為大家分享了ubuntu 16.04下mysql 5.7.17 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL優(yōu)化案例之隱式字符編碼轉(zhuǎn)換

    MySQL優(yōu)化案例之隱式字符編碼轉(zhuǎn)換

    這篇文章主要介紹了MySQL優(yōu)化案例之隱式字符編碼轉(zhuǎn)換,隱式類(lèi)型轉(zhuǎn)換也會(huì)導(dǎo)致同樣的放棄走樹(shù)搜索,更多相關(guān)內(nèi)容具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • MySQL常用的幾種連接(JOIN)方式總結(jié)

    MySQL常用的幾種連接(JOIN)方式總結(jié)

    MySQL常用JOIN類(lèi)型包括INNER JOIN(返回匹配記錄)、LEFT JOIN(左表全顯示,右表無(wú)匹配則為NULL)、RIGHT JOIN(右表全顯示)、FULL OUTER JOIN(需用UNION模擬),默認(rèn)為INNER JOIN,選擇時(shí)需根據(jù)數(shù)據(jù)完整性和業(yè)務(wù)需求,合理使用索引以優(yōu)化性能
    2025-07-07
  • MySQL數(shù)據(jù)庫(kù)表的合并與分區(qū)實(shí)現(xiàn)介紹

    MySQL數(shù)據(jù)庫(kù)表的合并與分區(qū)實(shí)現(xiàn)介紹

    今天我們來(lái)聊聊處理大數(shù)據(jù)時(shí)Mysql的存儲(chǔ)優(yōu)化。當(dāng)數(shù)據(jù)達(dá)到一定量時(shí),一般的存儲(chǔ)方式就無(wú)法解決高并發(fā)問(wèn)題了。最直接的MySQL優(yōu)化就是分區(qū)分表,以下是我個(gè)人對(duì)分區(qū)分表的筆記
    2022-09-09
  • 如何選擇合適的MySQL日期時(shí)間類(lèi)型來(lái)存儲(chǔ)你的時(shí)間

    如何選擇合適的MySQL日期時(shí)間類(lèi)型來(lái)存儲(chǔ)你的時(shí)間

    這篇文章主要介紹了如何選擇合適的MySQL日期時(shí)間類(lèi)型來(lái)存儲(chǔ)你的時(shí)間,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 淺談MySql的存儲(chǔ)引擎(表類(lèi)型)

    淺談MySql的存儲(chǔ)引擎(表類(lèi)型)

    通常意義上,數(shù)據(jù)庫(kù)也就是數(shù)據(jù)的集合,具體到計(jì)算機(jī)上數(shù)據(jù)庫(kù)可以是存儲(chǔ)器上一些文件的集合或者一些內(nèi)存數(shù)據(jù)的集合
    2011-05-05
  • 如何使用MySQL一個(gè)表中的字段更新另一個(gè)表中字段

    如何使用MySQL一個(gè)表中的字段更新另一個(gè)表中字段

    這篇文章主要介紹了如何使用MySQL一個(gè)表中的字段更新另一個(gè)表中字段,需要的朋友可以參考下
    2018-11-11
  • MySQL中去重處理的方法小結(jié)

    MySQL中去重處理的方法小結(jié)

    本文主要介紹了MySQL中去重方法小結(jié),包含DISTINCT、GROUPBY、聚合函數(shù)、子查詢、臨時(shí)表、窗口函數(shù)、GROUP_CONCAT這些方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 淺談Mysql8和mysql5.7的區(qū)別

    淺談Mysql8和mysql5.7的區(qū)別

    本文主要介紹了Mysql8和mysql5.7的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論

宜川县| 界首市| 巫溪县| 玛纳斯县| 原阳县| 玉溪市| 通江县| 明星| 邯郸市| 澎湖县| 达孜县| 台山市| 水城县| 泸定县| 鹿泉市| 宁乡县| 阿克陶县| 丽水市| 霍林郭勒市| 文化| 定安县| 绥滨县| 布尔津县| 洪泽县| 厦门市| 新安县| 连云港市| 阳泉市| 祁门县| 牟定县| 吕梁市| 广灵县| 师宗县| 岑溪市| 枞阳县| 福鼎市| 浦城县| 农安县| 深水埗区| 洛扎县| 内乡县|