簡單的理解就是 not exists = not in;exists= in
但這只是簡單的理解而已,其裏面的執行機制和細微處還是有一定的差別!
以下是從網絡上摘錄下的文章:
在 MSSQL 中,插入(insert)一條記錄很簡單,但是一些特殊應用,在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,本文介紹的就是這個問題的解決方案。
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);
個人批註:not exists不存在,也就是說後面的括號中只要返回了數據那麼這個條件就不存在了,可以理解爲括號前的not
exists是一個左表達式 ,括號後的查詢是一個右表達式,只有當右表達式返回的也是not exists(即後面的查詢出來的結果是非空的)時,等式才成立。