[MySQL] Количество разных значений в одном поле

Есть таблица t1 с полями name, value. Надо за один запрос выбрать количество строк, где value имеет значения 3 и 5. На просторах интернета предлагают вариант вида:

SELECT SUM(IF(VALUE = 3, 1, 0)) AS v1,
       SUM(IF(VALUE = 5, 1, 0)) AS v2
FROM t1

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

SELECT COUNT(VALUE = 3 OR NULL) AS v1,
       COUNT(VALUE = 5 OR NULL) AS v2
FROM t1

Суть в том, что в данном запросе COUNT считает непустые значения. В данном случае, если условие внутри count ложно, то берется NULL, который не будет подсчитан COUNT’ом.

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

, ,

Оставить комментарий

Top ↑ | Main page | Back