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
將會是真,這樣該學生就會出現在查詢結果中。