MySQL 中的 WHERE NOT EXISTS 是一種用於查詢的子查詢子句,它允許你檢查主查詢結果中是否存在符合條件的資料行。當子查詢的結果集中不存在符合條件的資料行時,主查詢才會返回結果。
以下是一個 WHERE NOT EXISTS 子查詢的範例:
假設我們有兩個資料表:students 和 grades,其中 students 記錄了學生的基本資訊,grades 記錄了學生的成績。我們想要找出尚未有成績記錄的學生。可以使用 WHERE NOT EXISTS 來執行這樣的查詢:
SELECT *
FROM students s
WHERE NOT EXISTS (
SELECT 1
FROM grades g
WHERE g.student_id = s.id
);
在這個查詢中,子查詢 SELECT 1 FROM grades g WHERE g.student_id = s.id 會在 students 資料表的每一行中運行。如果子查詢返回了任何結果(即該學生有成績記錄),則 NOT EXISTS 將會是假,這樣該學生就不會出現在查詢結果中。反之,如果子查詢沒有返回任何結果(即該學生沒有成績記錄),則 NOT EXISTS 將會是真,這樣該學生就會出現在查詢結果中。