我正在使用Visual Studio 2008和Sql Server 2005
我想使用其他表中的值更新表 我写了一个查询,但它给出了错误
“无法将值NULL插入列'Quantity',表'Stationarymgmt.dbo.Item_Master';列不允许空值.UPDATE失败。”
临时表有以下列 项目代码, 数量, 成本, 名称 , 能解密,
Item_Master表包含以下列 项目代码, 名称, 能解密, 成本, 量,
查询
UPDATE Item_Master,temp
SET Item_Master.Quantity = Item_Master.Quantity - temp.Quantity where Item_Master.Item_Code = temp.Item_Code
请帮帮我
答案 0 :(得分:5)
您可以使用SQL Server的update ... from
:
UPDATE im
SET Quantity = im.Quantity - temp.Quantity
FROM Item_Master im
JOIN temp
ON im.Item_Code = temp.Item_Code
WHERE temp.Quantity is not null
where
条件应过滤掉temp
中缺少数量的行。
答案 1 :(得分:1)
请记住,值 - NULL = NULL的方式与' String'相同。 + NULL = NULL
所以要么
UPDATE Item_Master,temp
SET Item_Master.Quantity = Item_Master.Quantity - ISNULL(temp.Quantity, 0)
WHERE Item_Master.Item_Code = temp.Item_Code
OR
UPDATE Item_Master,temp
SET Item_Master.Quantity = Item_Master.Quantity - temp.Quantity
WHERE Item_Master.Item_Code = temp.Item_Code
AND temp.Quanity IS NOT NULL