Как узнать количество записей в MySQL таблице?

Здравствуйте. Мне нужно узнать количество записей в таблице. Конечно это просто и я делаю так:
SELECT COUNT(*) FROM `comm` WHERE `id` = :id

Но у меня задача иная и делаю так:
SELECT COUNT(*) FROM `comm` WHERE `id` = :id and `count` > 59

SELECT COUNT(*) FROM `comm` WHERE `id` = :id and `count` > 39 and `count` < 60

SELECT COUNT(*) FROM `comm` WHERE `id` = :id and `count` < 40

Суть в том, что мне нужно получить количество положительных, отрицательных, нейтральных комментариев.
А можно ли обойтись одним запросом, а то я думаю, что на такую вещь 3 запроса многовато?
Подскажите, если двигаюсь в не том направлении.
  • Вопрос задан
  • 3305 просмотров
Решения вопроса 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT IF(`count` < 40, 1, IF(`count` < 60, 2, 3)) as `cat`, COUNT(*) 
    FROM `comm` 
    WHERE `id` = :id 
    GROUP BY `cat`
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
либо три запроса либо UNION либо извращения с GROUP BY и HEAVING
Ответ написан
Через GROUP BY самое лучшее.
Ответ написан
Комментировать
shineblu
@shineblu
Добрый день,

Вы можете использовать следующую конструкцию в COUNT:

COUNT((CASE WHEN `count` > 59 THEN 1 ELSE NULL END)) as Count1,
COUNT((CASE WHEN `count` > 39 and `count` < 60 THEN 1 ELSE NULL END)) as Count2,
COUNT((CASE WHEN `count` < 40 THEN 1 ELSE NULL END)) as Count3

Соответственно в WHERE данные условия нужно удалить

Успехов!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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