最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

??HAVING字句

查詢部門編號(hào)、員工人數(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字句

查詢出公司每個(gè)部門的編號(hào)、名稱、位置、部門人數(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í)行依賴外部查詢,通常情況下都是因?yàn)樽硬樵冎械谋碛玫搅送獠康谋?,并進(jìn)行了條件關(guān)聯(lián),因此每執(zhí)行一次外部查詢,子查詢都要重新計(jì)算一次,這樣的子查詢就成為關(guān)聯(lián)子查詢。相關(guān)子查詢按照一行接一行的順序指針,主查詢的每一行都指向一次子查詢。

?查詢需求

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

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

查詢每個(gè)部門的編號(hào)、名稱、位置、部門平均工資、人數(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;

查詢每個(gè)部門工資最高的員工編號(hào)、姓名、職位、雇傭日期、工資、部門編號(hào)、部門名稱,顯示的結(jié)果按照部門編號(hào)進(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中提供了一個(gè)exixts結(jié)構(gòu)用于判斷子查詢是否有數(shù)據(jù)返回。如果子查詢中有數(shù)據(jù)返回,exists結(jié)構(gòu)返回true,否則返回false。

查詢公司管理者的編號(hào)、姓名、工作、部門編號(hào)

-- 多表查詢
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é)

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

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

相關(guān)文章

  • MySQL?臨時(shí)表的原理以及優(yōu)化方法

    MySQL?臨時(shí)表的原理以及優(yōu)化方法

    這篇文章主要介紹了MySQL?臨時(shí)表的原理以及優(yōu)化方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • MYSQL8如何快速修改root密碼

    MYSQL8如何快速修改root密碼

    MySQL8的改密碼跟MySQL5不同,很多朋友都遇到過這個(gè)問題,今天小編給大家講解下MYSQL8如何快速修改root密碼,需要的朋友可以參考下
    2023-05-05
  • mysql用戶變量與set語句示例詳解

    mysql用戶變量與set語句示例詳解

    這篇文章主要給大家介紹了關(guān)于mysql用戶變量與set語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • ubuntu下磁盤空間不足導(dǎo)致mysql無法啟動(dòng)的解決方法

    ubuntu下磁盤空間不足導(dǎo)致mysql無法啟動(dòng)的解決方法

    昨天又遇到了MySQL數(shù)據(jù)庫無法重啟的問題,還以為是權(quán)限的原因,后來發(fā)現(xiàn)提示是因?yàn)榇疟P空間不足導(dǎo)致的,通過查找相關(guān)資料得以解決了,所以下面這篇文章主要介紹了ubuntu下磁盤空間不足導(dǎo)致mysql無法啟動(dòng)的解決方法,需要的朋友可以參考下。
    2017-03-03
  • mysqldump參數(shù)詳細(xì)說明及用途

    mysqldump參數(shù)詳細(xì)說明及用途

    ??mysqldump?? 是一個(gè)強(qiáng)大的工具,用于從 MySQL 數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù),它支持多種輸出格式,包括 ??CSV??、??SQL??、??XML?? 等,在本文中,我們將詳細(xì)介紹 ??mysqldump?? 的一些常用參數(shù),以及它們的用途,感興趣的朋友一起看看吧
    2024-12-12
  • Mysql中關(guān)于Incorrect string value的解決方案

    Mysql中關(guān)于Incorrect string value的解決方案

    在對(duì)mysql數(shù)據(jù)庫中插入數(shù)據(jù)的時(shí)候,直接插入中文是沒有問題的!但是用預(yù)編譯語句時(shí),用流對(duì)數(shù)據(jù)進(jìn)行處理總報(bào)incorrect string value這個(gè)異常。本篇文章教給你解決方法
    2021-09-09
  • mysql創(chuàng)建外鍵報(bào)錯(cuò)的原因及解決(can't?not?create?table)

    mysql創(chuàng)建外鍵報(bào)錯(cuò)的原因及解決(can't?not?create?table)

    這篇文章主要介紹了mysql創(chuàng)建外鍵報(bào)錯(cuò)的原因及解決方案(can't?not?create?table),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • MySQL單表與多表練習(xí)題目及答案總結(jié)大全

    MySQL單表與多表練習(xí)題目及答案總結(jié)大全

    MySQL是一個(gè)強(qiáng)大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),多表查詢是數(shù)據(jù)庫操作中的重要部分之一,多表查詢?cè)试S您從多個(gè)表中檢索和操作數(shù)據(jù),以滿足復(fù)雜的數(shù)據(jù)需求,這篇文章主要介紹了MySQL單表與多表練習(xí)題目及答案總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • mysql中替代null的IFNULL()與COALESCE()函數(shù)詳解

    mysql中替代null的IFNULL()與COALESCE()函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于mysql中替代null的IFNULL()與COALESCE()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看看吧。
    2017-06-06
  • 解析MySQL中INSERT INTO SELECT的使用

    解析MySQL中INSERT INTO SELECT的使用

    本篇文章是對(duì)MySQL中INSERT INTO SELECT的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07

最新評(píng)論

喀什市| 布尔津县| 无为县| 邯郸县| 衡水市| 台北市| 莒南县| 凤阳县| 波密县| 永丰县| 鹿邑县| 察哈| 河间市| 钟祥市| 巧家县| 寿光市| 基隆市| 长治市| 平潭县| 云南省| 宁河县| 抚远县| 文登市| 巫溪县| 沐川县| 绥芬河市| 甘谷县| 井研县| 庄浪县| 乐昌市| 鲁甸县| 尼玛县| 永宁县| 观塘区| 罗平县| 晋城| 平定县| 莱西市| 浑源县| 大邑县| 建德市|