2013-06-10 4 views
3

Я хочу, чтобы обновить одну таблицы, которая является внутренним соединением к другому столу, но строки, которые должны быть обновлены, должны иметь определенное условие или не существуют во второй таблице:Обновление таблицы присоединилась к другому столу с различными условиями

Update T1 
Set STATUS = 'R' 
From table1 T1 
inner join table2 T2 
    on T1.ID = T2.ID and T2.STATUS = 'F' 

Update T1 
Set STATUS = 'R' 
From table1 T1 
Where T1.ID not exists in(Select T2.ID from table2 T2) 

Как я могу написать его одним запросом?

ответ

0

Вы можете сделать ИЛИ в предложении where. Как следующее:

Update T1 Set STATUS = 'R' From table1 T1 
    inner join table2 T2 on T1.ID = T2.ID and T2.STATUS = 'F' or T1.ID not exists in(Select T2.ID from table2 T2) 
+1

Извините @Stephen но «OR» не может работать с одним логическим условием в стороне и присоединиться к другому одному – IlhamM

+0

Попробуйте это, я забыл включить скобки. Обновить T1 Установить STATUS = 'R' из таблицы1 T1 внутренняя таблица соединений2 T2 на T1.ID = T2.ID где (T2.STATUS = 'F') или (T1.ID не существует (выберите T2.ID из таблицы2 T2)) – Mez

+1

С существу имеет синтаксическую ошибку. Поэтому я заменяю его: Update T1 Set STATUS = 'R' из таблицы1 T1 внутренняя таблица соединения2 T2 на T1.ID = T2.ID где (T2.STATUS = 'F') или (T1.ID не в (выберите T2.ID из таблицы2 T2)), но он вернул неверный результат, поскольку он проверяет только первую часть «Условие», – IlhamM

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