UPDATE запрос на обновление множества строк со вложенным SUBQUERY (COUNT)

Spear

почемучка
Добрый вечер!

Начну с небольшого оффтопика -- хочу поблагодарить всех форумчан, которые много лет назад помогали мне освоиться в РНР, в особенности Фаната, уж незнаю состоит ли он в дружных рядах форма на данный момент.

Так вот, а спросить я хотел следущее -- подскажите, пожалуйста, можно ли сделать что-то вроде такого запроса:

Нужно посчитать сумму valueColumn из таблицы table2 для каждого itemID в таблице table1

table1:
itemID (PK)| totalSum (int, NULL)
10 | NULL
...

table2:
logID (PK) | itemID (INT, INDEX) | valueColumn (int):
1 | 10 | 5
2 | 10 | 20
...

UPDATE table1 SET totalSum = (SELECT SUM(valueColumn) FROM table2 WHERE itemID = table1.itemID GROUP BY itemID) WHERE itemID IN (10,456,789 /* не менее 600-800 айдишников */)

То есть в итоге получить значение totalSum для (itemID 10) = 25. За один такой запрос предполагается обрабатывать по 700 обьектов
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
По-моему - нет, до тех пор, пока ты не напишешь везде у itemID префиксы (WHERE table2.intemID ...) таблиц. Потому как у тебя в двух таблицах одинаковые названия у столбцов, то синтаксический анализатор mysql не будет знать, откуда какая колонка должна браться. А с теоретической стороны запрос вполне нормальный.
 

Gas

может по одной?
Spear
а ты пробовал запустить свой запрос? от должен работать.
кстати, зачем перечислять id-шники в IN, много записей в таблице? почему не обновить всю таблицу (вообще убрать where)
 
Сверху