У меня есть 3 таблицы, мне нужно обновить столбец третьей таблицы, вычислив данные из двух других таблиц.Оператор обновления для нескольких идентификаторов
update table3 set column3=
(
select t2.column3+t1.column3
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id= 100
)
where id= 100;
Этот запрос отлично работает, он обновляет 3-й столбец таблицы, однако, если я поставить IN операторов, как это:
update table3 set column3=
(
select t2.column3+t1.column3
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id IN (100,101)
)
where id IN (100,101);
это не удается, и я получаю это сообщение
подзапрос возвращает более 1. Это недопустимо, когда подзапрос следует =,! =, <, < =,>,> = или когда подзапрос используется как выражение. Заявление было прекращено.
& Я знаю, что это потому, что в подзапросе возвращается более 1 строки, как я могу справиться с этим сценарием? Любой намек/мысль будет полезной.
Как обновить несколько идентификаторов? то есть. значение запроса выбора, возвращаемое идентификатором 100, должно быть обновлено в соответствии с идентификатором 100 в третьей таблице & аналогично для ID 101.
Кроме того, мне нужно сделать сумму, подобную этой сумме (t2.column3) - (t1.column3 + t1 .column2)
update table3 set column3=
(
select sum(t2.column3)- (t1.column3 + t1.column2)
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id IN (100,101)
)
where id IN (100,101);
Вы правы, мне не нужны условия внутренней идентификации. – Sharpeye500