私がやろうとしているのは、テーブルを別の一時テーブルと比較し、レコードがまだ存在しない場合はテーブルに挿入することです。私の問題は、IF NOT EXIST が正しくないように見えることです。コードを引き離すと、問題は次のとおりです。
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 を使用