MySQL資料庫基礎——多表查詢:
子查詢:
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.帶比較運算符的子查詢:
子查詢中還可以使用其他比較運算符,如“<”、“=”、“>”、“>=”、“<=”、“!=”等。