这是我提出的查询,但似乎无法正常工作。
UPDATE ItemDynamic
SET TaxID=8
FROM ItemDynamic
INNER JOIN Item
ON Item.ID = ItemDynamic.ItemID
WHERE Item.DateCreated>'2013-06-18' and StoreID=11 or StoreID=1 or StoreID=2 or StoreID=3
DateCreated列不在ItemDynamic中,此列在Item表中。所以我加入了Item表和ItemDynamic表。问题是,当我尝试同时更新更多商店时,它会更新整个商品。 但是,当我只更新一个商店时,它会更新。有什么理由吗?
谢谢,
答案 0 :(得分:1)
您的查询中有错误,您的OR
子句应该用圆括号
UPDATE ItemDynamic a
INNER JOIN Item B
ON b.ID = a.ItemID
SET a.TaxID=8
WHERE b.DateCreated>'2013-06-18'
AND (b.StoreID=11 OR b.StoreID=1 OR b.StoreID=2 OR b.StoreID=3)
我假设StoreID
和DateCreated
在表格项目中。
答案 1 :(得分:1)
当您想针对多个值测试字段时,我发现IN
比一堆OR
测试更清晰。它避免了您遇到的AND
/ OR
优先级问题。
UPDATE ItemDynamic
INNER JOIN Item
SET TaxID=8
ON Item.ID = ItemDynamic.ItemID
WHERE Item.DateCreated>'2013-06-18'
AND StoreID IN (11, 1, 2, 3)