天天看點

MySQL 子查詢

外層的成為外查詢(主查詢)

内層的稱為内查詢(子查詢)

子查詢在主查詢之前執行,結果被主查詢使用

将子查詢寫在比較條件的右側

子查詢分為單行子查詢和多行子查詢

子查詢計算出一個結果由主查詢使用,則成為單行子查詢

子查詢計算出多個結果由主查詢使用,則成為多行子查詢

4.2.1.1 單行子查詢的比較符

基本隻使用'>'、'>='、'='、'<'、'<='、'<>'

4.2.1.2 HAVING子查詢

4.2.1.3 CASE子查詢

4.2.1.4 子查詢空值問題

如果子查詢結果是空值,則外查詢也是控制

4.2.1.5 非法子查詢

Subquery returns more than 1 row

在單行查詢中,子查詢傳回了超過1行的資料

4.2.1.6 多行子查詢

多行子查詢使用的操作符

操作符

含義

IN

等于清單中的任意一個

ANY

需要和單行比較操作符一起使用,和子查詢傳回的某一個值比較

ALL

需要和單行比較操作符一起使用,和子查詢傳回的所有值比較

SOME

實際上是ANY的别名,作用相同,一般常使用ANY

子查詢傳回的結果不因主查詢的内容而改變,則成為不相關子查詢

需要将外查詢的資訊傳入内查詢

出了GROUP BY和LIMIT中其他都可以聲明子查詢。