Мне нужно обновить несколько записей в таблице на основе суммы некоторых значений в другой таблице. Вот мой запрос:Оператор обновления с вложенными объединениями не работает
UPDATE aallinnot2 c SET c.Energ_Kcal = (SELECT d.id1, SUM(c.Energ_Kcal)
FROM aaingred a
LEFT JOIN aaweight b ON a.unit = b.uni
LEFT JOIN aallinnot2 c ON a.mfdfsds = c.NDB_No
LEFT JOIN aalinfsds d ON a.fsdsnum = d.id1
WHERE d.own_id =42
GROUP BY id1)
WHERE c.NDB_No
IN ( SELECT DISTINCT `fsdsnum`
FROM `aaingred`
WHERE `usernum` LIKE '42'
)
MySQL said:
#1093 - You can't specify target table 'c' for update in FROM clause
К сожалению, я не знаю, как получить мои ценности без ссылок на целевую таблицу «с»! Есть ли обходной путь для этого?
Я не уверен, что сервер SQL, но подзапрос, чтобы обновить поле должен возвращать одну строку и один столбец. – newtover
по-прежнему получают ту же ошибку. "# 1093 - Вы не можете указывать целевую таблицу 'aallinnot2' для обновления в разделе FROM" – Nat
Хороший спот newtover. Я отредактировал соответственно. Nathaniel - думаю, что я не в своей глубине. Я уверен, что SQL Server будет работать с этим. –