Значения суммы одной строки?
У меня есть запрос 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
Правильно?
Ответы
Ответ 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
Возможно, на этот раз вам немного поздно, но если у вас все еще есть шанс изменить дизайн, то, возможно, стоит подумать об этом.