2013-09-25 4 views
1

мне нужен быстрый способ, чтобы написать запрос на обновлениеобъединить два оператора обновления в один для различных условий

UPDATE Content 
SET Status = 1 
WHERE Id in (SELECT userId from [User] where Location = 'US') 

В этом самом запросе, я хочу установить Status = 0 WHERE Id NOT IN (SELECT USERID из [ Пользователь]).

В принципе, я хочу объединить два обновления в один.

UPDATE Content 
SET Status = 1 
WHERE Id in (SELECT userId from [User] where Location = 'US') 

AND 

UPDATE Content 
SET Status = 0 
WHERE Id NOT in(SELECT userId from [User] where Location = 'US') 

, спасибо

ответ

3

Что-то, как это должно работать:

update c 
set Status = case when u.userId is not null then 1 else 0 end 
from Content c 
    left join [User] u on c.id = u.userId and u.Location = 'US' 

Для каждого Content строки, мы проверяем, есть ли соответствующий пользователь США и установить Status соответственно.

+0

Собственно, в предложении Where у меня много условий. Мне придется перемещать эти условия внутри Случаев. Это будет работать. благодаря – Marcus25

Смежные вопросы