这是我在数据库中的查询
UPDATE NewCustomer INNER JOIN ACTList ON NewCustomer.NewProvider<>ACTList.Provider SET NewCustomer.Status = "Denied Not Freemail";
正如您所看到的,唯一应该更新的记录是NewCustomer.Provider不等于ACTList.Provider,但它实际上正在更新所有字段。
有人可以告诉我为什么会这样吗?
答案 0 :(得分:0)
尝试:
UPDATE NewCustomer
SET NewCustomer.Status = "Denied Not Freemail"
FROM NewCustomer INNER JOIN ACTList
WHERE NewCustomer.NewProvider<>ACTList.Provider;
答案 1 :(得分:0)
给它一个镜头(未经测试)。它基本上是WHERE NewCustomer.NewProvider NOT IN ()
,但效率更高。
UPDATE NewCustomer
SET NewCustomer.Status = "Denied Not Freemail"
LEFT JOIN ACTList ON NewCustomer.NewProvider = ACTList.Provider
WHERE ACTList.Provider IS NULL
答案 2 :(得分:0)
您的查询选择了所有行,因为每行不等于ActList中的至少一行。您可以使用外部联接并检查空值。
UPDATE NewCustomer LEFT JOIN ACTList ON NewCustomer.NewProvider = ACTList.Provider SET NewCustomer.Status = "Denied Not Freemail"
WHERE (((ACTList.Provider) Is Null));