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

Значения суммы одной строки?

У меня есть запрос MySQL, который возвращает одну строку, состоящую из 1 и 0. Это для индикатора индикатора выполнения. Теперь я суммирую его в коде, но я попытался суммировать значения в запросе и понял, что не могу использовать SUM(), потому что у них много столбцов, а всего одна строка.

Есть ли способ, который я могу суммировать это автоматически в запросе? Это примерно так:

item_1 | item_2 | item_3 | item_4
-------+--------+--------+--------
     1 |      1 |      0 |      0

Изменить: я забыл упомянуть, item_1 и т.д. - это не просто значения поля, но каждый скорее является выражением, например SELECT IF( field_1 = 1 and field_2 IS NOT NULL, 0, 1 ) AS item_1 ..., поэтому мне кажется, что я должен выполнить вложенный запрос:

SELECT ( item_1 + item_2 ... ) FROM ( SELECT IF( field_1 = y and field_2 IS NOT NULL, 1, 0 ) AS item_1 ... ) AS alias

Правильно?

4b9b3361

Ответ 1

select item_1 + item_2 + item_3 + item_4 as ItemSum
from MyTable

Если могут быть нулевые значения, вам необходимо обработать их следующим образом:

select ifnull(item_1, 0) + ifnull(item_2, 0) + ifnull(item_3, 0) + ifnull(item_4, 0) as ItemSum
from MyTable

Ответ 2

Вы не можете сделать это проще:

SELECT item_1 + item_2 + item_3 + item_4
FROM Table1

Если у вас много столбцов, потребуется немного времени для ввода. Думаю, для создания таблицы потребовалось довольно много времени.

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

id, item_1, item_2, item_3, item_4

Ваша таблица может выглядеть так:

id, item_number, value

И затем вы можете запросить его следующим образом:

SELECT SUM(value)
FROM Table1
WHERE id = @id

На самом деле вам, вероятно, даже не нужен столбец значений. Наличие или отсутствие строки - достаточно информации. Таким образом, ваш запрос будет выглядеть следующим образом:

SELECT COUNT(*)
FROM Table1
WHERE id = @id

Возможно, на этот раз вам немного поздно, но если у вас все еще есть шанс изменить дизайн, то, возможно, стоит подумать об этом.