Обновление нескольких столбцов из подзапроса
Этот тип вещей был задан несколько раз раньше, но не совсем то, что я ищу. Мне нужно SET
две строки, равные различным частям подзапроса.
В настоящее время я использую:
UPDATE records
SET leads=(SELECT COUNT(*) FROM leads_table WHERE leads_table.blah=records.blah),
earnings=(SELECT SUM(amount) FROM leads_table WHERE leads_table.blah=records.blah)
Утверждения WHERE были явно упрощены... но в основном это тот же подзапрос, но я не думаю, что я должен запускать его дважды?
Я хочу сделать что-то вроде...
UPDATE records
SET (leads,earnings)=(SELECT COUNT(*),SUM(amount) FROM leads_table WHERE leads_table.blah=records.blah)
Ответы
Ответ 1
Вы можете просто присоединиться к таблице в подзапросе, который выполняет некоторые вычисления,
UPDATE records a
INNER JOIN
(
SELECT blah,
COUNT(*) totalCount,
SUM(amount) totalSum
FROM leads_table
GROUP BY blah
) b ON b.blah = a.blah
SET a.leads = b.totalCount
a.earnings = b.totalSum