Есть ли более элегантный способ написать следующую команду Microsoft SQL Server 2008?Обновить поле на основе значений другой таблицы
UPDATE TableB
SET TableBField2=0
WHERE TableBID IN(
SELECT TableBID
FROM TableB
JOIN TableA on TableB.TableAID=TableA.TableAID
WHERE TableBField2 < 0
AND TableAField1 = 0
)
Проще говоря, то, что я делаю, это обновление таблицы, основанной на значении поля в объединенной таблице. Интересно, не считается ли мое использование IN() неэффективным.
Если вы можете определить эти данные из фактов в других частях системы, то почему бы хранить его в два раза? Теперь вам нужно будет запускать это обновление каждый раз, когда вы касаетесь TableA или TableB, потому что вычисленный результат мог быть изменен, и поэтому TableBField2 будет потенциально устаревшим. –