Привет, извините за то, что я знаю это только для основных. простое обновление только с использованием суммы в той же таблице. мне нужно получить
total_tbl
+-- month1 --- month2 --- month3 --- total --+
| 3 3 5 |
| 5 3 5 |
| 3 4 |
| 5 5 |
+--------------------------------------------+
Мне нужно обновить общий столбец, используя SUM.
У меня есть это заявление до сих пор:
UPDATE total_tbl SET total = (SELECT SUM(month1,month2,month3))
Я должен обновить, даже если один столбец не имеет значения. Спасибо!
SUM()
используется для суммирования выражения по нескольким строкам, обычно с использованием GROUP BY
. Если вы хотите добавить выражения в одну и ту же строку, вы просто используете обычное сложение.
Используйте COALESCE()
, чтобы указать значение по умолчанию для нулевых столбцов.
UPDATE total_tbl
SET total = COALESCE(month1, 0) + COALESCE(month2, 0) + COALESCE(month3, 0)
Вам не нужно хранить эту производную информацию. Я бы рекомендовал вычисляемый столбец:
alter table total_tbl
add column total int -- or the datatype you need
generated always as (coalesce(month1, 0) + coalesce(month2, 0) + coalesce(month3, 0)) stored
Дополнительный столбец дает вам всегда актуальный взгляд на ваши данные. Вы даже можете проиндексировать его по своему усмотрению, чтобы его можно было эффективно запрашивать.
С другой стороны, ручное обслуживание значений потребует обновления этого столбца каждый раз, когда значение в строке изменяется, что может стать утомительным.