我想了解实现此目的的最有效方法:
我有一个 MySQL 表,其中包含我的用户信息,包括生日 (YYYY/MM/DD)。我的目标是检索一个数组 (php),其中包含从 10 岁到 60 岁的每个年龄段的用户总数。我可以只查询所有用户,将生日传递给我编写的生日到年龄 php 函数,然后用总计填充一个数组。但我想知道是否有一种方法可以构建一个 sql 查询来为我完成这项工作?
最佳答案
您应该能够对行进行分组:
SELECT
FLOOR(DATEDIFF(NOW(), `birthday`)/365) AS 'Age',
COUNT(*)
FROM `users`
WHERE FLOOR(DATEDIFF(NOW(), `birthday`)/365) BETWEEN 10 AND 60
AND `id` IN (1, 3, 5, 12, 29)
GROUP BY FLOOR(DATEDIFF(NOW(), `birthday`)/365)
ORDER BY FLOOR(DATEDIFF(NOW(), `birthday`)/365) ASC
结果不会包含没有用户的年龄,但我不确定您为什么需要它。
更新 - 添加了一个 id 过滤器 - 修复了日期计算(糟糕!) - 命名新列
关于php - 从生日日期列表到每个年龄段的总用户数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419901/