欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL筆記之子查詢使用介紹

 更新時(shí)間:2013年05月03日 15:32:03   作者:  
子查詢是將一個(gè)查詢語句嵌套在另一個(gè)查詢語句中,內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件

子查詢是將一個(gè)查詢語句嵌套在另一個(gè)查詢語句中

內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件

因?yàn)樵谔囟ㄇ闆r下,一個(gè)查詢語句的條件需要另一個(gè)查詢語句來獲取

參考表:employee

 

參考表:department

帶IN關(guān)鍵字的子查詢
復(fù)制代碼 代碼如下:

mysql> SELECT * FROM employee
    -> WHERE d_id IN
    -> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num  | d_id | name   | age  | sex  | homeaddr           |
+------+------+--------+------+------+--------------------+
|    1 | 1001 | 張三   |   26 | 男   | 北京市海淀區(qū)         |
|    2 | 1001 | 李四   |   24 | 女   | 北京市昌平區(qū)         |
|    3 | 1002 | 王五   |   25 | 男   | 湖南長沙市           |
+------+------+--------+------+------+--------------------+
 rows in set (0.00 sec)

此處首先查詢出department表中所有d_id字段的信息,并將結(jié)果作為條件

接著查詢employee表中以d_id為條件的所有字段信息

NOT IN的效果與上面剛好相反

帶比較運(yùn)算符的子查詢

復(fù)制代碼 代碼如下:

mysql> SELECT d_id, d_name FROM department
    -> WHERE d_id!=
    -> (SELECT d_id FROM employee WHERE age=24);
+------+-----------+
| d_id | d_name    |
+------+-----------+
| 1002 | 生產(chǎn)部    |
| 1003 | 銷售部    |
+------+-----------+
 rows in set (0.00 sec)

這里查詢出了哪些部門沒有年齡為24歲的員工,看起來有點(diǎn)復(fù)雜

此外,運(yùn)算符還有很多,這里不再贅述


帶EXISTS關(guān)鍵字的子查詢

EXISTS關(guān)鍵字表示存在。使用EXISTS關(guān)鍵字時(shí),內(nèi)層查詢語句不返回查詢的記錄,而是返回一個(gè)真假值,如果內(nèi)層查詢語句查詢到滿足條件的記錄,就返回true,否則返回false

當(dāng)返回的值為true時(shí),外層查詢語句將進(jìn)行查詢,否則不進(jìn)行查詢

復(fù)制代碼 代碼如下:

mysql> SELECT * FROM employee
    -> WHERE EXISTS
    -> (SELECT d_name FROM department WHERE d_id=1004);
Empty set (0.00 sec)

此處內(nèi)層循環(huán)并沒有查詢到滿足條件的結(jié)果,因此返回false,外層查詢不執(zhí)行

NOT EXISTS剛好與之相反

當(dāng)然,EXISTS關(guān)鍵字可以與其他的查詢條件一起使用

條件表達(dá)式與EXISTS關(guān)鍵字之間用AND或者OR來連接

復(fù)制代碼 代碼如下:

mysql> SELECT * FROM employee
    -> WHERE age>24 AND EXISTS
    -> (SELECT d_name FROM department WHERE d_id=1003);
+------+------+--------+------+------+--------------------+
| num  | d_id | name   | age  | sex  | homeaddr           |
+------+------+--------+------+------+--------------------+
|    1 | 1001 | 張三   |   26 | 男   | 北京市海淀區(qū)         |
|    3 | 1002 | 王五   |   25 | 男   | 湖南長沙市           |
+------+------+--------+------+------+--------------------+
 rows in set (0.00 sec)

帶ANY關(guān)鍵字的子查詢

ANY關(guān)鍵字表示滿足其中任一條件

復(fù)制代碼 代碼如下:

mysql> SELECT * FROM employee
    -> WHERE d_id!=ANY
    -> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num  | d_id | name   | age  | sex  | homeaddr           |
+------+------+--------+------+------+--------------------+
|    1 | 1001 | 張三   |   26 | 男   | 北京市海淀區(qū)         |
|    2 | 1001 | 李四   |   24 | 女   | 北京市昌平區(qū)         |
|    3 | 1002 | 王五   |   25 | 男   | 湖南長沙市           |
|    4 | 1004 | Aric   |   15 | 男   | England            |
+------+------+--------+------+------+--------------------+
 rows in set (0.00 sec)

帶ALL關(guān)鍵字的子查詢

ALL關(guān)鍵字表示滿足其中所有條件

復(fù)制代碼 代碼如下:

mysql> SELECT * FROM employee
    -> WHERE d_id>=ALL
    -> (SELECT d_id FROM department);
+------+------+------+------+------+----------+
| num  | d_id | name | age  | sex  | homeaddr |
+------+------+------+------+------+----------+
|    4 | 1004 | Aric |   15 | 男   | England  |
+------+------+------+------+------+----------+
 row in set (0.00 sec)

暫時(shí)不明白這兩條語句是什么意思,到時(shí)候再補(bǔ)上


UNION合并查詢結(jié)果

復(fù)制代碼 代碼如下:

mysql> SELECT d_id FROM employee
    -> UNION
    -> SELECT d_id FROM department;
+------+
| d_id |
+------+
| 1001 |
| 1002 |
| 1004 |
| 1003 |
+------+
 rows in set (0.00 sec)

合并比較好理解,也就是將多個(gè)查詢的結(jié)果合并在一起,然后去除其中的重復(fù)記錄

如果想保存重復(fù)記錄可以使用UNION ALL語句

相關(guān)文章

  • MySQL對limit查詢語句的優(yōu)化方法

    MySQL對limit查詢語句的優(yōu)化方法

    這篇文章主要介紹了MySQL對limit查詢語句的優(yōu)化方法,分別講解了offset參數(shù)比較小和offset參數(shù)比較大的時(shí)候,如何優(yōu)化查詢語句,需要的朋友可以參考下
    2014-07-07
  • Linux(CentOS7)安裝MySQL8全過程

    Linux(CentOS7)安裝MySQL8全過程

    這篇文章主要介紹了Linux(CentOS7)安裝MySQL8全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • mysql存儲(chǔ)過程游標(biāo)之loop循環(huán)解讀

    mysql存儲(chǔ)過程游標(biāo)之loop循環(huán)解讀

    這篇文章主要介紹了mysql存儲(chǔ)過程游標(biāo)之loop循環(huán)解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 如何恢復(fù)MySQL主從數(shù)據(jù)一致性

    如何恢復(fù)MySQL主從數(shù)據(jù)一致性

    MySQL主從數(shù)據(jù)一致性怎么恢復(fù),MySQL主從數(shù)據(jù)庫的數(shù)據(jù)不一致,猜測備庫在同步過程中出現(xiàn)了問題,現(xiàn)在的問題很明確,就是如何恢復(fù)主從庫數(shù)據(jù)的一致性,下文為大家分享解決方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解

    MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • 數(shù)據(jù)庫崩潰,利用備份和日志進(jìn)行災(zāi)難恢復(fù)

    數(shù)據(jù)庫崩潰,利用備份和日志進(jìn)行災(zāi)難恢復(fù)

    我相信數(shù)據(jù)庫崩潰都不是大家所愿意看到的,但是這種情況發(fā)生時(shí)我們要采取補(bǔ)救措施,本文就是介紹了如何利用備份和日志進(jìn)行災(zāi)難恢復(fù),需要的朋友可以參考下
    2015-07-07
  • mysql exists與not exists實(shí)例詳解

    mysql exists與not exists實(shí)例詳解

    這篇文章主要介紹了mysql exists與not exists實(shí)例詳解的相關(guān)資料,鑒于 not exists 的效率往往要高于 not in , 所以一般情況下會(huì)使用前者替代后者,需要的朋友可以參考下
    2017-07-07
  • 千萬級記錄的Discuz論壇導(dǎo)致MySQL CPU 100%的優(yōu)化筆記

    千萬級記錄的Discuz論壇導(dǎo)致MySQL CPU 100%的優(yōu)化筆記

    談到自己在解決一個(gè)擁有 60 萬條記錄的 MySQL 數(shù)據(jù)庫訪問時(shí),導(dǎo)致 MySQL CPU 占用 100% 的經(jīng)過。在解決問題完成優(yōu)化(optimize)之后,我發(fā)現(xiàn) Discuz 論壇也存在這個(gè)問題,當(dāng)時(shí)稍微提了一下
    2010-12-12
  • MySQL錯(cuò)誤:You can‘t specify target table ‘xxx‘ for update in FROM clause的解決方案

    MySQL錯(cuò)誤:You can‘t specify target table&n

    在編寫MySQL的UPDATE或DELETE語句時(shí),如果子查詢中直接引用了要操作的目標(biāo)表,可能會(huì)遇到一個(gè)常見的錯(cuò)誤:You can’t specify target table ‘xxx’ for update in FROM clause,這個(gè)錯(cuò)誤讓許多開發(fā)者感到困惑,本文將深入分析其原因,并提供多種解決方案,
    2025-02-02
  • MySQL外鍵約束(FOREIGN KEY)案例講解

    MySQL外鍵約束(FOREIGN KEY)案例講解

    這篇文章主要介紹了MySQL外鍵約束(FOREIGN KEY)案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論