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

一文帶你了解MySQL中的子查詢

 更新時(shí)間:2023年06月06日 10:36:25   作者:我有一顆五葉草  
子查詢指一個(gè)查詢語句嵌套在另一個(gè)查詢語句內(nèi)部的查詢,這個(gè)特性從MySQL 4.1開始引入,SQL中子查詢的使用大大增強(qiáng)了SELECT 查詢的能力,本文帶大家詳細(xì)了解MySQL中的子查詢,需要的朋友可以參考下

1. 需求分析與問題解決

1.1實(shí)際問題

誰的工資比 馬云 高?

方式1:原始方法

SELECT salary
FROM employees
WHERE last_name = '馬云';

返回結(jié)果:馬云的工資為 11000

那么我們查詢出工資比 11000 高的即可。

SELECT last_name,salary
FROM employees
WHERE salary > 11000;

方式2:自連接

SELECT e2.last_name,e2.salary
FROM employees e1,employees e2
WHERE e1.last_name = '馬云'
AND e1.`salary` < e2.`salary`

方式3:子查詢

SELECT last_name,salary
FROM employees
WHERE salary > (
SELECT salary
FROM employees
WHERE last_name = '馬云'
);

1.2 子查詢的基本使用

  • 子查詢的基本語法結(jié)構(gòu)

  • 子查詢(內(nèi)查詢)在主查詢之前一次執(zhí)行完成。

  • 子查詢的結(jié)果被主查詢(外查詢)使用 。

  • 注意事項(xiàng)
    - 子查詢要包含在括號(hào)內(nèi)
    - 將子查詢放在比較條件的右側(cè)
    - 單行操作符對(duì)應(yīng)單行子查詢,多行操作符對(duì)應(yīng)多行子查詢

1.3 子查詢的分類

  • 分類方式1:
    我們按內(nèi)查詢的結(jié)果返回一條還是多條記錄,將子查詢分為 單行子查詢 、 多行子查詢 。

  • 分類方式2:

    我們按內(nèi)查詢是否被執(zhí)行多次,將子查詢劃分為 相關(guān)(或關(guān)聯(lián))子查詢 和 不相關(guān)(或非關(guān)聯(lián))子查詢 。

  • 子查詢從數(shù)據(jù)表中查詢了數(shù)據(jù)結(jié)果,如果這個(gè)數(shù)據(jù)結(jié)果只執(zhí)行一次,然后這個(gè)數(shù)據(jù)結(jié)果作為主查詢的條件進(jìn)行執(zhí)行,那么這樣的子查詢叫做不相關(guān)子查詢。
  • 同樣,如果子查詢需要執(zhí)行多次,即采用循環(huán)的方式,先從外部查詢開始,每次都傳入子查詢進(jìn)行查詢,然后再將結(jié)果反饋給外部,這種嵌套的執(zhí)行方式就稱為相關(guān)子查詢。

2. 單行子查詢

2.1 單行比較操作符

操作符含義
=等于
>大于
>=大于等于
<小于
<=小于等于
!=不等于

2.2 代碼示例

題目:查詢工資大于2023號(hào)員工工資的員工的信息

SELECT * FROM emp 
WHERE salary > 
	(SELECT salary FROM emp WHERE eid = 2023)

2.3 HAVING 中的子查詢

  • 首先執(zhí)行子查詢。
  • 向主查詢中的HAVING 子句返回結(jié)果。

題目:查詢最低工資大于50號(hào)部門最低工資的部門id和其最低工資

SELECT department_id, MIN(salary)
FROM emp
GROUP BY department_id
HAVING MIN(salary) >
	(SELECT MIN(salary)
	FROM emp
	WHERE department_id = 50);

2.4 注意的問題

  • 子查詢中的空值問題
SELECT last_name, job_id
FROM emp
WHERE job_id =
	(SELECT job_id
	FROM emp
	WHERE last_name = '劉強(qiáng)東');
  • 該子查詢不返回任何行,因?yàn)樽硬樵兎祷乜?/li>
  • 非法使用子查詢
SELECT employee_id, last_name
FROM emp
WHERE salary =
	(SELECT MIN(salary)
	FROM emp
	GROUP BY department_id);
  • 多行子查詢使用單行比較符

3. 多行子查詢

  • 也稱為集合比較子查詢
  • 內(nèi)查詢返回多行
  • 使用多行比較操作符

3.1 多行比較操作符

體會(huì) ANY 和 ALL 的區(qū)別

3.2 代碼示例

題目1:返回其它job_id中比job_id為‘IT_PROG’部門任一工資低的員工的員工號(hào)、姓名、job_id 以及salary

題目2:返回其它job_id中比job_id為‘IT_PROG’部門所有工資都低的員工的員工號(hào)、姓名、job_id以及salary

4. 相關(guān)子查詢

4.1 相關(guān)子查詢執(zhí)行流程

如果子查詢的執(zhí)行依賴于外部查詢,通常情況下都是因?yàn)樽硬樵冎械谋碛玫搅送獠康谋?,并進(jìn)行了條件關(guān)聯(lián),因此每執(zhí)行一次外部查詢,子查詢都要重新計(jì)算一次,這樣的子查詢就稱之為 關(guān)聯(lián)子查詢 。

相關(guān)子查詢按照一行接一行的順序執(zhí)行,主查詢的每一行都執(zhí)行一次子查詢。

說明:子查詢中使用主查詢中的列

4.2 代碼示例

題目:查詢員工中工資大于本部門平均工資的員工的last_name,salary和其department_id

方式1:略

方式2:在 FROM 中使用子查詢

SELECT last_name,salary,e1.department_id
FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees
GROUP BY department_id) e2
WHERE e1.`department_id` = e2.department_id
AND e2.dept_avg_sal < e1.`salary`;

from型的子查詢:子查詢是作為from的一部分,子查詢要用()引起來,并且要給這個(gè)子查詢?nèi)e名,把它當(dāng)成一張“臨時(shí)的虛擬的表”來使用。

以上就是一文帶你了解MySQL中的子查詢的詳細(xì)內(nèi)容,更多關(guān)于MySQL 子查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL 配置優(yōu)化(多個(gè)參數(shù))

    MySQL 配置優(yōu)化(多個(gè)參數(shù))

    安裝MySQL后,配置文件my.cnf在 /MySQL安裝目錄/share/mysql目錄中,該目錄中還包含多個(gè)配置文件可供參考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分別對(duì)應(yīng)大中小型數(shù)據(jù)庫(kù)應(yīng)用的配置。win環(huán)境下即存在于MySQL安裝目錄中的.ini文件
    2016-05-05
  • 使用mysql語句對(duì)分組結(jié)果進(jìn)行再次篩選方式

    使用mysql語句對(duì)分組結(jié)果進(jìn)行再次篩選方式

    這篇文章主要介紹了使用mysql語句對(duì)分組結(jié)果進(jìn)行再次篩選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 關(guān)于mongodb連接池配置方式

    關(guān)于mongodb連接池配置方式

    這篇文章主要介紹了關(guān)于mongodb連接池配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • MySQL連表更新實(shí)現(xiàn)高效數(shù)據(jù)同步的實(shí)戰(zhàn)指南

    MySQL連表更新實(shí)現(xiàn)高效數(shù)據(jù)同步的實(shí)戰(zhàn)指南

    在數(shù)據(jù)庫(kù)開發(fā)中,連表更新(JOIN UPDATE)是一種常見且強(qiáng)大的操作,它允許我們基于關(guān)聯(lián)表的數(shù)據(jù)來更新目標(biāo)表,本文將深入探討MySQL連表更新的語法、應(yīng)用場(chǎng)景、性能優(yōu)化及常見陷阱,幫助開發(fā)者掌握這一核心技能,需要的朋友可以參考下
    2026-02-02
  • mysql免安裝版的實(shí)際配置方法

    mysql免安裝版的實(shí)際配置方法

    本文主要向大家講述的是MySQL 免安裝版的實(shí)際配置方法,以及對(duì)其的相關(guān)的下載網(wǎng)址也有詳細(xì)介紹,望你會(huì)有所收獲。
    2010-08-08
  • MySQL中慢SQL的監(jiān)控與優(yōu)化技巧

    MySQL中慢SQL的監(jiān)控與優(yōu)化技巧

    當(dāng)你的應(yīng)用越來越慢,用戶開始抱怨卡頓,數(shù)據(jù)庫(kù)CPU飆升到100%——很可能就是慢SQL在作祟!別擔(dān)心,今天我將帶你從零開始掌握MySQL慢SQL的監(jiān)控與優(yōu)化技巧,讓你的數(shù)據(jù)庫(kù)性能提升10倍,需要的朋友可以參考下
    2025-08-08
  • Mysql如何查看表的索引

    Mysql如何查看表的索引

    這篇文章主要介紹了Mysql如何查看表的索引問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SQL SERVER 日期格式轉(zhuǎn)換詳解

    SQL SERVER 日期格式轉(zhuǎn)換詳解

    本篇文章是對(duì)SQL SERVER 日期格式轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL ClickHouse不同于SQL的語法介紹

    MySQL ClickHouse不同于SQL的語法介紹

    CloudCanal 近期實(shí)現(xiàn)了 MySQL(RDS) 到 ClickHouse 實(shí)時(shí)同步的能力,功能包含全量數(shù)據(jù)遷移、增量數(shù)據(jù)遷移、結(jié)構(gòu)遷移能力,以及附帶的監(jiān)控、告警、HA等能力
    2022-11-11
  • 詳解Mysql5.7自帶的壓力測(cè)試命令mysqlslap及使用語法

    詳解Mysql5.7自帶的壓力測(cè)試命令mysqlslap及使用語法

    mysqlslap是一個(gè)診斷程序,旨在模擬MySQL服務(wù)器的客戶端負(fù)載并報(bào)告每個(gè)階段的時(shí)間。這篇文章主要介紹了Mysql5.7自帶的壓力測(cè)試命令mysqlslap的相關(guān)知識(shí),需要的朋友可以參考下
    2019-10-10

最新評(píng)論

达拉特旗| 澄城县| 江安县| 梓潼县| 内江市| 北碚区| 唐山市| 杨浦区| 富民县| 阿拉善左旗| 黄石市| 邮箱| 阜平县| 广安市| 遂平县| 西充县| 德阳市| 芮城县| 广饶县| 东阿县| 中牟县| 汨罗市| 青川县| 凌海市| 南平市| 阿尔山市| 桓仁| 大厂| 青河县| 县级市| 科尔| 吐鲁番市| 宁陵县| 仪征市| 枣庄市| 乐都县| 龙川县| 南汇区| 周宁县| 湾仔区| 汕尾市|