use*_*168 6 sql sql-server-2008-r2 sql-insert
我想要做的是将表与另一个临时表进行比较,如果记录尚未存在,请将其插入表中.我的问题是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.
Run Code Online (Sandbox Code Playgroud)
这没有返回任何结果(我希望这会返回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)
Run Code Online (Sandbox Code Playgroud)
这返回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)
Run Code Online (Sandbox Code Playgroud)
PS.使用SQL Server 2008 R2
在子查询中废弃内部联接.
您应该尝试的是以下内容:
SELECT PRODUCT_CODE FROM #no_stock
WHERE NOT EXISTS (SELECT * from NO_STOCK
WHERE NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE)
Run Code Online (Sandbox Code Playgroud)
这里不需要内连接,因为外部查询中引用了#no_stock表.
您的其他查询也是如此:
SELECT PRODUCT_CODE FROM #no_stock
WHERE EXISTS (SELECT * from NO_STOCK
WHERE NO_STOCK.PRODUCT_CODE = #no_stock.PRODUCT_CODE)
Run Code Online (Sandbox Code Playgroud)
试试这些,看看它们是否有效.
| 归档时间: |
|
| 查看次数: |
7802 次 |
| 最近记录: |