MySQL資料庫基礎——多表查詢:子查詢

心也臺聲發表於2020-10-30

MySQL資料庫基礎入門——day12

子查詢:

1.帶IN關鍵字的子查詢:

使用IN關鍵字進行子查詢時,內層查詢語句僅返回一個資料列,這個資料列中的值將供外層查詢語句進行比較操作。

SELECT * FROM 表1 WHERE 欄位名 IN(SELECT 查詢欄位 FROM 表2 WHERE 條件);

SELECT語句中還可以使用NOT IN關鍵字,其作用與IN相反。

2.帶EXISTS關鍵字的子查詢:

EXISTS關鍵字後面的引數可以是任意一個子查詢,這個子查詢的作用相當於測試、比較,它不會產生任何資料,只會返回TRUE或FALSE。當返回值為TRUE時,外層查詢才會執行。
其語法格式如下:

SELECT * FROM 表1 WHERE EXISTS(SELECT 查詢欄位 FROM 表2 WHERE 條件);

3.帶ANY關鍵字的子查詢:

ANY關鍵字表示滿足其中任意一個條件,它允許建立一個表示式對子查詢的返回值列表進行比較,只要滿足內查詢中任意一個比較條件,就返回一個結果作為外層查詢條件。

SELECT * FROM 表1  WHERE 條件1 比較運算子 ANY(SELECT 查詢欄位 FROM 表2 WHERE 條件);

在上述語法中條件2為“(SELECT 查詢欄位 FROM 表2 WHERE 條件)”的返回值。

4.帶ALL關鍵字的子查詢:

ALL關鍵字與ANY類似,只不過帶ALL關鍵字的子查詢返回的結果需同時滿足所有內查詢條件。

SELECT * FROM 表1  WHERE 條件1 比較運算子 ALL(SELECT 查詢欄位 FROM 表2 WHERE 條件);

5.帶比較運算子的子查詢:

子查詢中還可以使用其他比較運算子,如“<”、“=”、“>”、“>=”、“<=”、“!=”等。

相關文章