Подтвердить что ты не робот

Обновление нескольких столбцов из подзапроса

Этот тип вещей был задан несколько раз раньше, но не совсем то, что я ищу. Мне нужно 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)
4b9b3361

Ответ 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