使用其他表的数据更新表

时间:2011-02-17 14:38:51

标签: .net sql vb.net sql-server-2005

我正在使用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

请帮帮我

2 个答案:

答案 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