亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

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

本節(jié)將為大家?guī)鞰ySQL子查詢在HAVING/SELECT字句中使用、及相關子查詢和WITH/EXISTS字句的講解?

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

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

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字句

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

#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 關聯(lián)子查詢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;

二、相關子查詢

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

?查詢需求

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

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字句

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

-- 多表查詢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結構用于判斷子查詢是否有數(shù)據(jù)返回。如果子查詢中有數(shù)據(jù)返回,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);

四、總結

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

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

相關文章:
主站蜘蛛池模板: 国产精品视频一区二区三区 | 亚洲第一毛片 | 国产高清在线精品一区在线 | 一级视频在线免费观看 | 婷婷午夜天 | 天天拍久久 | 亚洲日韩精品欧美一区二区一 | 羞羞答答www网址进入在线观看 | 99久久精品国产麻豆 | 国产永久一区二区三区 | 日韩区欧美区 | 丁香啪啪天堂激情婷婷 | 欧美特黄一区二区三区 | 国产成人一区二区三区在线视频 | 97久久久久国产精品嫩草影院 | 婷婷 综合网站 | 九九精 | 欧美亚洲国产精品第一页 | 欧美特黄a级猛片a级 | 国产三级a三级三级天天 | 成人免费v片在线观看 | 欧美人与动物xxxx | 亚洲欧美另类在线观看 | 亚洲精品国产第七页在线 | 婷婷久久综合 | 日韩a一级欧美一级 | 国产麻豆视频在线看网站 | 免费看黄色一级毛片 | 日韩一区二区三区视频在线观看 | 亚洲欧美在线一区二区 | 免费人成网ww44kk44 | 免费羞羞视频网站 | 一级黄色a| 欧美午夜理伦三级在线观看 | 337d欧美人体大胆瓣开下面 | 色天天天天综合男人的天堂 | 欧美黄色一级视屏 | 日韩精品第一区 | 99久热只有精品视频免费观看17 | 欧美在线黄色片 | 99久久中文字幕 |