若存在,则使用相同的SQL联接,若不存在,则为任何



我需要用产品价格更新一列。产品可以与订单相同,也可以与订单相似。当产品完全相同时,这很容易。但当产品相似时,并不是所有的特征都等于订单表,我不知道如何匹配。到目前为止,我已经写了一个这样的查询:

Update #SelledProducts
Set S.Price=O.Price
FROM 
#SelledProducts S, #OrdersWithPrice O
WHERE S.MandatoryCharacteristic1=O.MandatoryCharacteristic1
AND   S.MandatoryCharacteristic2=O.MandatoryCharacteristic2
AND   S.MandatoryCharacteristic3=O.MandatoryCharacteristic3
--Te following is wrong:
...
AND   S.OptionalCharacteristic1=O.OptionalCharacteristic1
AND   S.OptionalCharacteristic2=O.OptionalCharacteristic2

但当OptionalCharacteristics不相等时,它当然不起作用。具有可选特性,我的意思是:订单可以有一个红色框,但如果没有红色框,则同一订单可以有任何颜色框。

我怎样才能做到这一点?我使用的是SQL Server 2008。感谢

您可以在查询可选特征时使用OR条件而不是AND。请找到下面的例子。

Update #SelledProducts
Set S.Price=O.Price
FROM 
#SelledProducts S, #OrdersWithPrice O
WHERE S.MandatoryCharacteristic1=O.MandatoryCharacteristic1
AND   S.MandatoryCharacteristic2=O.MandatoryCharacteristic2
AND   S.MandatoryCharacteristic3=O.MandatoryCharacteristic3
--Te following is wrong:
...
AND ( S.OptionalCharacteristic1=O.OptionalCharacteristic1
OR   S.OptionalCharacteristic2=O.OptionalCharacteristic2)

相关内容

最新更新