我想要做的是將表與另一個臨時表進行比較,如果該記錄不存在,則將其插入表中。我的問題是IF NOT EXIST似乎不正確。如果我拉的代碼分開我的問題是:SQL插入記錄如果不存在
返回29個結果:
SELECT *
from NO_STOCK INNER JOIN #no_stock
ON NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE
WHERE NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE.
這將返回任何結果(我希望它可以返回34):
SELECT PRODUCT_CODE
FROM #no_stock
WHERE NOT EXISTS
(SELECT * from NO_STOCK INNER JOIN #no_stock
ON NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE
WHERE NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE)
這將返回63:
SELECT PRODUCT_CODE
FROM #no_stock
WHERE EXISTS
(SELECT * from NO_STOCK INNER JOIN #no_stock
ON NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE
WHERE NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE)
ps。使用SQL Server 2008 R2
爲什麼這個工作比NOT EXISTS更好? – 2013-03-11 19:16:30
謝謝,已經幫了很多!不能在我想檢查日期的情況下使用嗎?那麼只有在產品代碼和日期不存在於同一記錄中的當前日期的情況下才能插入? – user2158168 2013-03-11 19:20:34
否,NOT IN將一個項目的值與返回一列的SELECT語句的結果進行比較。如果你需要檢查多個值的存在,你最好回到NOT EXISTS – Melanie 2013-03-12 13:55:42