Я хочу обновить поле в таблице с помощью простого оператора case. Тем не менее, я хочу применить этот оператор case к выбранному числу строк. Единственный способ определить, что представляют собой эти строки, - это присоединиться к другой таблице, а затем установить некоторые условия на основе полей этой второй таблицы.Таблица обновления SQL Server 1 с условием в таблице 2
Например, это, как я думал, что это будет работать ...
update table1
set table1.field1 = case
when table1.field1 = 'foo' then 'bar'
else 'foobar'
end
join table2 on table1.obj_id=table2.id
where table2.field1 = 'fizzbuzz'
and table2.field2 in ('foo', 'bar', 'foobar')
Тем не менее, кажется, что один не может иметь присоединиться внутри обновления заявление, как это. По крайней мере, не в MS SQL.
Я попытался найти ответ, но все, что я могу найти, это люди, пытающиеся обновить таблицу данными из другой таблицы, включая объединение, в результате чего можно было бы поставить оператор «из», где мое соединение, а затем вложенный выбор с объединением внутри этого. Я не уверен, что это решение для меня. Я не хочу обновлять из другой таблицы, я хочу фильтровать на основе другой таблицы.
Единственное решение, о котором я могу думать сейчас, - это решение двух запросов, сначала получив список obj_id
s, а затем выбрав только эти идентификаторы во втором операторе обновления. Не идеально.
это нужно ЕКУ? – McNets
«Тем не менее, похоже, что в операторе обновления не может быть объединения, как это. По крайней мере, не в MS SQL». , Это не тот случай. – AK47