#mysql
#mysql
Вопрос:
Я пытаюсь заставить этот запрос к базе данных возвращать только 3 наиболее распространенных состояния, но почему-то я продолжаю возвращать все состояния, перечисленные в порядке убывания. Не уверен, где я ошибаюсь …?
SELECT state, COUNT(*) as count
FROM Contact
GROUP BY state
HAVING state NOT IN(' ')
ORDER BY COUNT(*) DESC
LIMIT 3
Комментарии:
1. запрос выглядит хорошо, не могли бы вы предоставить некоторые примеры данных, если это возможно на sqlfiddle.com
2. Похоже, ваш запрос действительно работает нормально ~ sqlfiddle.com /#!2/8fc57/2
3. @user1218172 Ваш запрос работает нормально. Почему это не работает для вас?
Ответ №1:
Я не думаю, что вы используете HAVING
правильно.
Я бы просто использовал этот запрос
SELECT state, COUNT(1) AS state_count
FROM Contact
WHERE state <> ' '
GROUP BY state
ORDER BY state_count DESC
LIMIT 3
Комментарии:
1. @user1218172 Я не совсем уверен, почему ваш исходный запрос не работал. В демо-версии, которую я связал, все выглядит нормально