2017-01-11 77 views
1

我有这个疑问这是工作确定只更新表,如果字段为空

UPDATE Master 
    SET Closed = Date(), 
     Status = 'Closed', 
     [Closure Reason] = 'Not on Extract' 
    WHERE NOT EXISTS (SELECT 1 
         FROM Extract 
         WHERE Master.Case = Extract.Case 
        ); 

我需要修改它添加另一个条件,即只做更新,如果主的价值。[关闭原因]为NULL

但是,这给出了一个语法错误:

UPDATE Master SET Closed = Date(), Status = 'Closed', [Closure Reason] = 'Not on Extract' 
WHERE [Closure Reason] = "" AND 
WHERE NOT EXISTS (SELECT 1 
        FROM Extract 
        WHERE Master.Case = Extract.Case 
       ); 

我已经尝试使用IS NULL而不是= “” 无济于事。

请问它有什么问题?

+1

2项WHERE条款一AND条件运算符'IS NULL'应该为你希望做什么工作。您应该使用该结构显示查询。 –

回答

3
UPDATE Master SET Closed = Date(), Status = 'Closed', [Closure Reason] = 'Not on Extract' 
WHERE [Closure Reason] IS NULL 
AND NOT EXISTS (SELECT 1 
        FROM Extract 
        WHERE Master.Case = Extract.Case 
       ); 

您不能添加多个WHERE条款,您需要使用AND。如果您的要求是“只有在Master。[Closure Reason]为NULL”的情况下才进行更新,则检查NULL,而不是空字符串。

+1

谢谢@JaydipJ,错过了额外的“AND”。 – HoneyBadger

1

您需要在not exists之前删除第二个where

UPDATE Master SET Closed = Date(), Status = 'Closed', [Closure Reason] = 'Not on Extract' 
WHERE [Closure Reason] = "" AND 
NOT EXISTS (SELECT 1 
        FROM Extract 
        WHERE Master.Case = Extract.Case 
       ); 
1

您需要添加的,而不是具有类似于

WHERE NOT EXISTS (SELECT 1 
        FROM Extract 
        WHERE Master.Case = Extract.Case 
       ) 
AND [Closure Reason] IS NULL;