SQL连接是否相同(如果不存在)

时间:2018-11-26 14:45:14

标签: sql-server

我需要用产品价格更新一栏。产品可以与订单相同,也可以与订单相似。 当产品相同时,这很容易。 但是,当产品相似时,并非所有特征都与订购表相同,因此我不知道该如何进行匹配。 到目前为止,我已经编写了这样的查询:

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。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以在查询中使用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)