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

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

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

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

Корректный?

23
задан user151841 1 February 2010 в 19:04
поделиться

2 ответа

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
48
ответ дан 29 November 2019 в 01:27
поделиться

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

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

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

5
ответ дан 29 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: