我有以下查询,返回用户的唯一年龄计数
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岁的用户,因此它不返回任何值
有没有办法让我23岁的count = 0?就像下面的
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) }
答案 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