亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL子查詢與HAVING/SELECT的結(jié)合使用

 更新時間:2023年06月25日 14:35:55   作者:熱愛編程的小K  
這篇文章主要介紹了MySQL子查詢在HAVING/SELECT字句中使用、及相關(guān)子查詢和WITH/EXISTS字句的使用,具有一定的參考價值,感興趣的可以了解一下

前言

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

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

??HAVING字句

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

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

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

SELECT e.deptno,d.dname,ROUND(AVG(sal),2) avgsal
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY e.deptno
HAVING 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 d
WHERE e.deptno=d.deptno
GROUP BY e.deptno;
#2
SELECT d.deptno,d.dname,d.loc,temp.cnt,temp.avgsal
FROM dept d,(SELECT deptno,COUNT(deptno) cnt,AVG(sal) avgsal FROM emp GROUP BY deptno) temp
WHERE d.deptno=temp.deptno;
#3 關(guān)聯(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) avgsal
FROM dept d;

二、相關(guān)子查詢

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

?查詢需求

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

SELECT e.deptno,e.ename,e.sal
FROM emp e
WHERE 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) cnt
FROM dept d,emp e
WHERE d.deptno=e.deptno
GROUP BY e.deptno;
-- 子查詢
SELECT d.deptno,d.dname,d.loc,temp.avgsal,temp.cnt
FROM dept d,(
							SELECT deptno,AVG(sal) avgsal,COUNT(deptno) cnt
							FROM emp
							GROUP BY deptno
						)temp
WHERE d.deptno=temp.deptno;
-- 使用with
WITH temp AS(
							SELECT deptno,AVG(sal) avgsal,COUNT(deptno) cnt
							FROM emp
							GROUP BY deptno
						)
SELECT d.deptno,d.dname,d.loc,temp.avgsal,temp.cnt
FROM dept d,temp
WHERE d.deptno=temp.deptno;

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

-- 相關(guān)子查詢
SELECT e.empno,e.ename,e.job,e.hiredate,e.sal,e.deptno,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno
AND 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.dname
FROM emp e,dept d,(SELECT deptno,MAX(sal) maxsal FROM emp GROUP BY deptno) temp
WHERE e.deptno=d.deptno
AND e.sal=temp.maxsal
AND e.deptno = temp.deptno
ORDER BY e.deptno;

??EXISTS/NOT EXISTS字句

在SQL中提供了一個exixts結(jié)構(gòu)用于判斷子查詢是否有數(shù)據(jù)返回。如果子查詢中有數(shù)據(jù)返回,exists結(jié)構(gòu)返回true,否則返回false。

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

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

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

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

四、總結(jié)

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

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

相關(guān)文章

  • Unity連接MySQL并讀取表格數(shù)據(jù)的實現(xiàn)代碼

    Unity連接MySQL并讀取表格數(shù)據(jù)的實現(xiàn)代碼

    本文給大家介紹Unity連接MySQL并讀取表格數(shù)據(jù)的實現(xiàn)代碼,實例化的同時調(diào)用MySqlConnection,傳入?yún)?shù),這里的傳入?yún)?shù)個人認(rèn)為是CMD里面的直接輸入了,string格式直接類似手敲到cmd里面,完整代碼參考下本文
    2021-06-06
  • 淺談MYSQL主鍵約束和唯一約束的區(qū)別

    淺談MYSQL主鍵約束和唯一約束的區(qū)別

    本文主要介紹了MYSQL主鍵約束和唯一約束的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL實戰(zhàn)文章(非常全的基礎(chǔ)入門類教程)

    MySQL實戰(zhàn)文章(非常全的基礎(chǔ)入門類教程)

    半個月時間把MySQL重新鞏固了一遍,梳理了一篇幾萬字超硬核文章,想學(xué)習(xí)mysql的朋友可以看看
    2023-05-05
  • mysql表的清空、刪除和修改操作詳解

    mysql表的清空、刪除和修改操作詳解

    這篇文章主要詳細(xì)介紹了mysql表的清空、刪除和修改操作的方法,以及一些常用的mysql的常用操作,非常的簡單實用,有需要的可以參考下
    2014-09-09
  • 詳解MySQL8中的新特性窗口函數(shù)

    詳解MySQL8中的新特性窗口函數(shù)

    MySQL8?窗口函數(shù)是一種特殊的函數(shù),它可以在一組查詢行上執(zhí)行類似于聚合的操作,但是不會將查詢行折疊為單個輸出行,而是為每個查詢行生成一個結(jié)果,本文就來和大家簡單講講它的用法,感興趣的可以了解一下
    2023-06-06
  • Mysql如何查詢近30天活躍用戶數(shù)

    Mysql如何查詢近30天活躍用戶數(shù)

    這篇文章主要介紹了Mysql查詢近30天活躍用戶數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • MySQL 性能優(yōu)化的最佳20多條經(jīng)驗分享

    MySQL 性能優(yōu)化的最佳20多條經(jīng)驗分享

    今天,數(shù)據(jù)庫的操作越來越成為整個應(yīng)用的性能瓶頸了,這點對于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫的性能,這并不只是DBA才需要擔(dān)心的事,而這更是我們程序員需要去關(guān)注的事情。
    2010-07-07
  • MySQL實現(xiàn)數(shù)據(jù)插入操作的示例詳解

    MySQL實現(xiàn)數(shù)據(jù)插入操作的示例詳解

    使用MySQL插入數(shù)據(jù)時,可以根據(jù)需求場景選擇合適的插入語句。本文通過給出每個使用場景下的實例來說明數(shù)據(jù)插入的實現(xiàn)過程和方法,希望對大家有所幫助
    2023-02-02
  • Mysql中find_in_set()函數(shù)用法詳解以及使用場景

    Mysql中find_in_set()函數(shù)用法詳解以及使用場景

    前幾天在sql查詢的時候,想要判斷數(shù)據(jù)庫中表的某一列中的值是否在List集合中,接觸到了find_in_set的使用,用起來方便快捷,下面這篇文章主要給大家介紹了關(guān)于Mysql中find_in_set()函數(shù)用法詳解以及使用場景的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 詳解MySQL8.0 密碼過期策略

    詳解MySQL8.0 密碼過期策略

    這篇文章主要介紹了MySQL8.0 密碼過期策略的相關(guān)資料,幫助大家更好的理解和使用MySQL8.0的新功能,感興趣的朋友可以了解下
    2020-11-11

最新評論