子查詢 (SQL Subquery)

我們可以將一個 SQL 查詢語句塞入另一個 SQL 查詢語句中,這就是子查詢 (Subquery)。子查詢是一個查詢內的查詢,我們可以用來連接資料表,或在不能使用單一語句來完成的查詢時我們就需要用到子查詢。

子查詢語法 (SQL Subquery Syntax)

SELECT table_column1, table_column2, table_column3···
FROM table_name
WHERE 欄位名稱 比較運算子 (SELECT子查詢);
內部的SELECT查詢稱為子查詢,而外部的SELECT查詢即稱為主查詢(Main Query)。

子查詢運用實例 (Example)

我們現在利用子查詢來達到跟 MINUS 相同的查詢結果:

這是公司在台灣地區銷售的產品資料表「products_taiwan」:
P_Id P_Name
1 LCD
2 CPU
3 RAM

這是公司在中國大陸地區銷售的產品資料表「products_china」:
P_Id P_Name
1 Keyboard
2 CPU
3 LCD

現在我們想查出有在台灣地區銷售但是沒有在中國大陸地區銷售的產品,我們可以作一個子查詢:
SELECT P_Name FROM products_taiwan
WHERE P_Name NOT IN 
(SELECT P_Name FROM products_china);

查詢結果如下:
P_Name
RAM