【发布时间】:2017-10-18 12:41:33
【问题描述】:
我有以下疑问:
Declare @qty int
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)
if(@qty =0)
Update StockTB SET Qty=Qty+5, BatchNo='1234', ExpDate='03/11/2018' WHERE
ProductID='6' AND Qty=0
Else
INSERT INTO StockTB Values('6', '5', '1234', '03/11/2018')
上述查询工作正常。但是当我在查询中添加ELSE IF 时,它失败了。这是在实现ELSE IF 之后。
Declare @expdate date
SET @expdate =(SELECT ExpDate FROM StockTB WHERE ProductID='6' AND
ExpDate='03/11/2018')
Declare @qty int
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)
if(@qty =0)
Update StockTB SET Qty=Qty+5, BatchNo='1234', ExpDate='03/11/2018' WHERE
ProductID='6' AND Qty=0
Else if(@expdate='03/11/2018')
Update StockTB SET Qty=Qty+5 WHERE ProductID='6' AND ExpDate='03/11/2018'
Else
INSERT INTO StockTB Values('6', '5', '1234', '03/11/2018')
【问题讨论】:
-
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)- 你预计什么时候非零? -
@Damien_The_Unbeliever 有一种情况:如果查询没有返回结果 (
NULL)。 -
@MatSnow - 同意 - 这将是一种非常奇怪的写法,看起来只需要一个
MERGE。 -
“无法工作”到底是什么意思?你期望什么,你会得到什么?
-
您应该阅读有关 MERGE 的信息。 docs.microsoft.com/en-us/sql/t-sql/statements/…处理这种事情要容易得多。
标签: sql sql-server database sql-server-2008