子查詢 (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_IdP_Name
1LCD
2CPU
3RAM

這是公司在中國大陸地區銷售的產品資料表 products_china:

P_IdP_Name
1Keyboard
2CPU
3LCD

現在我們想查出有在台灣地區銷售但是沒有在中國大陸地區銷售的產品,我們可以作一個子查詢:

SELECT P_Name FROM products_taiwan
WHERE P_Name NOT IN 
(SELECT P_Name FROM products_china);

查詢結果如下:

P_Name
RAM