MySQL: считать две вещи в одном запросе? - PullRequest
2 голосов
/ 20 апреля 2010

В одной из моих таблиц есть логический столбец (значение 0 или 1).

Мне нужно получить два значения: количество строк с логическим значением 0 и количество строк с 1. В настоящее время у меня есть два запроса: один для подсчета 1 и другой для подсчета 0 '.

Обрабатывает ли MySQL всю таблицу при подсчете строк с условием WHERE? Мне интересно, есть ли один запрос, который позволил бы два счетчика в зависимости от условий?

Или есть способ получить общий счет наряду с условным счетом ГДЕ? Этого будет достаточно, поскольку мне нужно только вычесть одно число из другого (из-за логической природы столбца). Нет значений NULL.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 20 апреля 2010

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

 SELECT bool_column, COUNT(bool_column) FROM your_table
 WHERE your_conditions
 GROUP BY bool_column

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

3 голосов
/ 20 апреля 2010

Попробуйте это:

SELECT
    SUM(your_field) as positive_count,
    SUM(IF(your_field, 0, 1)) as negative_count
FROM thetable
0 голосов
/ 20 апреля 2010

Простое предложение группы должно сработать:

SELECT boolField, COUNT(boolField)
FROM myTable
GROUP BY boolField
0 голосов
/ 20 апреля 2010

Если все они равны 0 или 1, и в результате вы не возражаете против 2 строк, вы можете сгруппировать по этому полю и выполнить подсчет следующим образом:

select field, count(field)
from table
group by field
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...