Điều tôi đang cố gắng làm là so sánh bảng với một bảng tạm thời khác và nếu bản ghi chưa tồn tại, hãy chèn nó vào bảng. Vấn đề của tôi là IF NOT EXIST dường như không chính xác. Nếu tôi kéo mã ngoài vấn đề tôi có là:Chèn SQL bản ghi nếu không tồn tại
Trả 29 kết quả:
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.
này trả về không có kết quả (Tôi mong chờ này để trả lại 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)
lợi nhuận này 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. sử dụng SQL Server 2008 R2
Tại sao điều này hoạt động tốt hơn KHÔNG tồn tại? –
Cảm ơn điều đó đã giúp ích rất nhiều !! KHÔNG THỂ được sử dụng trong một tình huống mà tôi muốn kiểm tra ngày là tốt? Vì vậy, chỉ chèn nếu Mã sản phẩm và ngày không tồn tại với ngày hiện tại trong cùng một bản ghi? – user2158168
Không, KHÔNG IN so sánh giá trị của một mục với kết quả của câu lệnh SELECT trong đó một cột được trả về. Nếu bạn cần kiểm tra sự tồn tại của nhiều giá trị, bạn nên quay trở lại NOT EXISTS – Melanie