2017-01-11 3 views
1

У меня есть этот запрос, который работает нормальнотолько Таблица обновления, если поле является NULL

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

Мне нужно изменить его, чтобы добавить ещё один критерий, то есть только сделать обновление, если значение Master. [Закрытие Reason] является 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

'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. Если ваше требование «ТОЛЬКО обновлять, если значение« Мастер ». [Closure Reason] равно NULL», тогда проверьте на NULL, а не на пустую строку.

+1

Спасибо @JaydipJ, пропустил лишний 'AND'. – HoneyBadger

1

Вам необходимо удалить второй where до not exists.

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

Вы должны добавить AND условный оператор вместо двух WHERE положений как

WHERE NOT EXISTS (SELECT 1 
        FROM Extract 
        WHERE Master.Case = Extract.Case 
       ) 
AND [Closure Reason] IS NULL; 
Смежные вопросы