色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

MySQL子查詢與HAVING/SELECT的結合使用

瀏覽:2日期:2023-08-14 20:18:43
目錄前言一、在HAVING/SELECT字句中使用子查詢??HAVING字句??SELECT字句二、相關子查詢?查詢需求三、WITH/EXISTS、NOT EXISTS字句??WITH字句??EXISTS/NOT EXISTS字句四、總結前言

本節將為大家帶來MySQL子查詢在HAVING/SELECT字句中使用、及相關子查詢和WITH/EXISTS字句的講解?

一、在HAVING/SELECT字句中使用子查詢??HAVING字句

查詢部門編號、員工人數、平均工資,并且要求這些部門的平均工資高于公司平均薪資。

SELECT deptno,COUNT(deptno) cnt,AVG(sal) avgsal FROM emp GROUP BY deptnoHAVING avgsal>(SELECT AVG(sal) FROM emp);

查詢出所有部門中平均工資最高的部門名稱及平均工資

SELECT e.deptno,d.dname,ROUND(AVG(sal),2) avgsalFROM emp e,dept dWHERE e.deptno=d.deptnoGROUP BY e.deptnoHAVING avgsal>( #查詢出所有部門平均工資中最高的薪資 SELECT MAX(avgsal) FROM (SELECT AVG(sal) avgsal FROM emp GROUP BY deptno) AS temp)

??SELECT字句

查詢出公司每個部門的編號、名稱、位置、部門人數、平均工資

#1多表查詢SELECT d.deptno,d.dname,d.loc,COUNT(e.deptno),AVG(e.sal)FROM emp e,dept dWHERE e.deptno=d.deptnoGROUP BY e.deptno;#2SELECT d.deptno,d.dname,d.loc,temp.cnt,temp.avgsalFROM dept d,(SELECT deptno,COUNT(deptno) cnt,AVG(sal) avgsal FROM emp GROUP BY deptno) tempWHERE d.deptno=temp.deptno;#3 關聯子查詢SELECT d.deptno,d.dname,d.loc,(SELECT COUNT(deptno) FROM emp WHERE deptno=d.deptno GROUP BY deptno) cnt,(SELECT AVG(sal) FROM emp WHERE deptno=d.deptno GROUP BY deptno) avgsalFROM dept d;

二、相關子查詢

?如果子查詢的執行依賴外部查詢,通常情況下都是因為子查詢中的表用到了外部的表,并進行了條件關聯,因此每執行一次外部查詢,子查詢都要重新計算一次,這樣的子查詢就成為關聯子查詢。相關子查詢按照一行接一行的順序指針,主查詢的每一行都指向一次子查詢。

?查詢需求

查詢員工中工資大于本部門平均工資的員工的部門編號、姓名、薪資

SELECT e.deptno,e.ename,e.salFROM emp eWHERE e.sal>(SELECT AVG(sal) FROM emp WHERE deptno=e.deptno );

三、WITH/EXISTS、NOT EXISTS字句??WITH字句

查詢每個部門的編號、名稱、位置、部門平均工資、人數

-- 多表查詢SELECT d.deptno,d.dname,d.loc,AVG(e.sal) avgsal ,COUNT(e.deptno) cntFROM dept d,emp eWHERE d.deptno=e.deptnoGROUP BY e.deptno;-- 子查詢SELECT d.deptno,d.dname,d.loc,temp.avgsal,temp.cntFROM dept d,(SELECT deptno,AVG(sal) avgsal,COUNT(deptno) cntFROM empGROUP BY deptno)tempWHERE d.deptno=temp.deptno;-- 使用withWITH temp AS(SELECT deptno,AVG(sal) avgsal,COUNT(deptno) cntFROM empGROUP BY deptno)SELECT d.deptno,d.dname,d.loc,temp.avgsal,temp.cntFROM dept d,tempWHERE d.deptno=temp.deptno;

查詢每個部門工資最高的員工編號、姓名、職位、雇傭日期、工資、部門編號、部門名稱,顯示的結果按照部門編號進行排序

-- 相關子查詢SELECT e.empno,e.ename,e.job,e.hiredate,e.sal,e.deptno,d.dnameFROM emp e,dept dWHERE e.deptno=d.deptnoAND e.sal=(SELECT MAX(sal) FROM emp WHERE deptno=e.deptno)ORDER BY e.deptno;-- 表子查詢SELECT e.empno,e.ename,e.job,e.hiredate,e.sal,e.deptno,d.dnameFROM emp e,dept d,(SELECT deptno,MAX(sal) maxsal FROM emp GROUP BY deptno) tempWHERE e.deptno=d.deptnoAND e.sal=temp.maxsalAND e.deptno = temp.deptnoORDER BY e.deptno;

??EXISTS/NOT EXISTS字句

在SQL中提供了一個exixts結構用于判斷子查詢是否有數據返回。如果子查詢中有數據返回,exists結構返回true,否則返回false。

查詢公司管理者的編號、姓名、工作、部門編號

-- 多表查詢SELECT DISTINCT e.empno,e.ename,e.job,e.deptnoFROM emp e JOIN emp mgrON e.empno=mgr.mgr;-- 使用EXISTSSELECT e.empno,e.ename,e.job,e.deptnoFROM emp eWHERE EXISTS (SELECT * FROM emp WHERE e.empno=mgr);

查詢部門表中,不存在于員工表中的部門信息

-- 多表查詢SELECT e.deptno,d.deptno,d.dname,d.locFROM emp e RIGHT JOIN dept dON e.deptno=d.deptnoWHERE e.deptno IS NULL;-- 使用EXISTSSELECT d.deptno,d.dname,d.locFROM dept dWHERE NOT EXISTS (SELECT deptno FROM emp WHERE deptno=d.deptno);

四、總結

?? 子查詢允許結構化的查詢,這樣就可以把一個查詢語句的每個部分隔開。??子查詢提供了另一種方法來執行有些需要復雜的join和union來實現的操作。??在許多人看來,子查詢可讀性較高。 而實際上,這也是子查詢的由來。

到此這篇關于MySQL子查詢與HAVING/SELECT的結合使用的文章就介紹到這了,更多相關MySQL子查詢與HAVING/SELECT內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 在线步兵区 | 美女被免费网站在线视频软件 | 国产高清在线精品免费 | 亚洲在线中文字幕 | 在线免费精品视频 | 国产伦理自拍 | 国产午夜精品理论片影院 | 国产网站精品 | 免费在线观看毛片 | 亚洲视频一区二区在线观看 | 在线男人的天堂 | 国产a级特黄的片子视频 | 三级毛片大全 | 欧美一级高清在线观看 | 看全色黄大色黄大片女图片 | 久久亚洲欧美成人精品 | 热久久伊人 | 中国日本高清免费视频网 | 国产高清视频免费观看 | 欧美成人性做爰网站免费 | 亚洲日本高清成人aⅴ片 | 成人毛片免费观看视频 | 91进入蜜桃臀在线播放 | 国产一区二区影院 | 男女扒开双腿猛进入爽爽视频 | 色综合久久久高清综合久久久 | 69视频在线观看xxxxx | 中文字幕va一区二区三区 | 亚洲影院在线播放 | 亚洲欧美卡通动漫丝袜美腿 | 国产成人久视频免费 | 伊人国产在线视频 | 荡女妇边被c边呻吟久久 | 未成人做爰视频www 窝窝午夜精品一区二区 | 欧美午夜三级我不卡在线观看 | 中文无码日韩欧免费视频 | 亚洲成人精品 | 亚欧美图片自偷自拍另类 | 6080伦理久久精品亚洲 | 久久精品国产99久久6动漫欧 | 国产极品一区 |