午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:21日期: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 數據庫
相關文章:
主站蜘蛛池模板: 97超碰国产在线 | 天天操夜操 | 欧美精品黑人猛交高潮 | 亚洲欧美激情精品一区二区 | 在线视频观看你懂的 | 老牛影视av一区二区在线观看 | 午夜激情视频 | 日日草视频 | 国产欧美在线观看视频 | 99视频只有精品 | 色综合久久久久久久 | 成年人在线免费看 | 岛国精品在线播放 | 人人综合 | 欧美狠狠操 | 亚洲欧美国产精品专区久久 | 亚洲骚 | 哪里看毛片 | 宅男噜噜噜66一区二区 | 91在线无精精品一区二区 | 欧美理论片在线观看 | 欧美aaaaaa| 日韩精品一区二区三区在线 | 午夜欧美精品 | 成人综合影院 | 亚洲视频在线免费观看 | 亚洲一区二区三区在线免费观看 | 成人黄色在线看 | 成人手机在线免费视频 | 蜜桃精品噜噜噜成人av | 极品少妇av | 日本精品影院 | 黄色小视频在线免费看 | 久操视频在线观看 | 久久久久网站 | 亚洲国产精品99久久久久久久久 | 男人视频网 | 日韩一本在线 | av黄页 | 色婷在线 | 亚洲精品婷婷 |