# #sql #google-bigquery #sql-update
Вопрос:
Я написал код ниже, но, основываясь на моем reseacrh, нет возможности использовать Group by в обновлении.
Мой код:
update customer
set customer.cust_balance= sum(invoice.inv_amount)
where customer.cust_num=invoice.cust_num
group by invoice.cust_num
Я думаю, что мне следует сделать что-то подобное ниже, но я не уверен, что это полностью верно:
update customer
set customer.cust_balance= (select sum(invoice.inv_amount) from invoice
where customer.cust_num=invoice.cust_num
group by invoice.cust_num)
Я считаю, что приведенный выше подзапрос не будет выполнять правильную работу. Любые советы или помощь будут оценены по достоинству
Комментарии:
1. пометьте свою СУБД ,пожалуйста, также ваш второй запрос выглядит нормально
2. Конечно, я его добавил . спасибо, что напомнили мне
Ответ №1:
Ваша версия будет работать, но лучше написать ее как:
update customer
set cust_balance = (select sum(i.inv_amount)
from invoice i
where customer.cust_num = i.cust_num
);
Другими словами, предложение о корреляции является достаточным. Вам это тоже не нужно GROUP BY
.
Комментарии:
1. Спасибо, Гордон, что произойдет, если я добавлю группу по? останутся ли результаты такими же, как и без группировки по?
2. @mohamadatar да, это так. условие
where customer.cust_num = i.cust_num
уже гарантирует нужные вам записи, и этого достаточно3. Спасибо @eshirvana