国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:4日期: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 數據庫
相關文章:
主站蜘蛛池模板: 国产精品黄网站免费观看 | 99久久久久国产精品免费 | 午夜dj视频完整社区 | 在线视免费频观看韩国aaa | 久久成人免费网站 | 综合自拍亚洲综合图区美腿丝袜 | 久久精品视频播放 | 亚洲日本视频在线 | 国内精品久久久久影院不卡 | 色一情| 一个人的视频日本免费 | 韩国精品一区二区三区四区五区 | 久久99国产精品亚洲 | 白嫩美女一级毛片免费看 | 麻豆第一页 | 欧美日韩精品一区二区三区视频播放 | 中国一级片免费看 | 国产精品亚洲欧美云霸高清 | 日韩欧美一区二区三区免费看 | 国产欧美另类久久久品 | 91免费国产高清观看 | 麻豆一级片 | 亚洲gogo人体大胆西西安徽 | 国产高清一区二区三区四区 | 亚洲综合一区二区不卡 | 亚洲综合色一区二区三区另类 | 欧美一级成人 | 日本精品一区二区三区在线视频 | 久草在线新免费 | 精品一区二区三区18 | 欧美另类69xxxxx视频 | 国产伦理久久精品久久久久 | 特级做人爱c级特级aav毛片 | 国产高清视频免费观看 | 亚洲一级片在线播放 | 中国女人毛茸茸免费视频 | 暖暖视频日韩欧美在线观看 | 国产小呦| 国产精品18久久久久久久久久 | 久久精品免费一区二区视 | 日本高清久久 |