#mysql
#mysql
Вопрос:
У меня есть следующий запрос, который возвращает количество уникальных возрастов пользователей
SELECT name,COUNT(age) FROM visitor_interview WHERE age IN (27,26,23) group by age
Этот запрос возвращает следующее (уникальный возраст и их количество)
array(2) { ["age"]=> int(26) ["count(age)"]=> int(3) }
array(2) { ["age"]=> int(27) ["count(age)"]=> int(2) }
У меня нет пользователя старше 23 лет, поэтому он не возвращает никакого значения для этого
Есть ли способ, которым я могу получить count = 0 для возраста 23. Как показано ниже
array(2) { ["age"]=> int(26) ["count(age)"]=> int(3) }
array(2) { ["age"]=> int(27) ["count(age)"]=> int(2) }
array(2) { ["age"]=> int(23) ["count(age)"]=> int(0) }
Ответ №1:
Вы можете сделать это, создав производную таблицу с возрастами, которые вас интересуют в использовании, UNION
и LEFT JOIN
добавив это в свою visitor_interview
таблицу:
SELECT a.age, COUNT(v.age)
FROM (SELECT 23 AS age UNION SELECT 26 UNION SELECT 27) a
LEFT JOIN visitor_interview v ON v.age = a.age
GROUP BY a.age
ORDER BY a.age