Обновление MYSQL с использованием SUM той же таблицы

Привет, извините за то, что я знаю это только для основных. простое обновление только с использованием суммы в той же таблице. мне нужно получить

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))

Я должен обновить, даже если один столбец не имеет значения. Спасибо!

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
545
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Дополнительный столбец дает вам всегда актуальный взгляд на ваши данные. Вы даже можете проиндексировать его по своему усмотрению, чтобы его можно было эффективно запрашивать.

С другой стороны, ручное обслуживание значений потребует обновления этого столбца каждый раз, когда значение в строке изменяется, что может стать утомительным.

Другие вопросы по теме