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

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í)行依賴外部查詢,通常情況下都是因為子查詢中的表用到了外部的表,并進行了條件關(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é)果按照部門編號進行排序

-- 相關(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)文章

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

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

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

    MYSQL8如何快速修改root密碼

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

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

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

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

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

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

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

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

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

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

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

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

    MySQL是一個強大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),多表查詢是數(shù)據(jù)庫操作中的重要部分之一,多表查詢允許您從多個表中檢索和操作數(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)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看看吧。
    2017-06-06
  • 解析MySQL中INSERT INTO SELECT的使用

    解析MySQL中INSERT INTO SELECT的使用

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

最新評論

灵台县| 辽阳县| 辽阳市| 宜丰县| 梧州市| 松潘县| 隆回县| 桦川县| 井陉县| 都江堰市| 甘德县| 瓦房店市| 巴楚县| 涞源县| 新津县| 台州市| 舒城县| 庄浪县| 上犹县| 三门县| 庆阳市| 安徽省| 渭南市| 公主岭市| 闽侯县| 龙泉市| 江达县| 鹤庆县| 肇东市| 博罗县| 黔南| 峨眉山市| 二连浩特市| 高唐县| 双桥区| 确山县| 茌平县| 五莲县| 偃师市| 威海市| 萨迦县|