gpt4 book ai didi

mysql - 来自带有过滤器的 MySQL 的年龄

转载 作者:行者123 更新时间:2023-11-29 00:01:15 25 4
gpt4 key购买 nike

我需要计算年龄 > 60 岁的人数,但是 MySQL 返回 0。请帮助我。

SELECT
count(*),
TIMESTAMPDIFF( YEAR, birth_date, CURDATE( ) ) AS age
FROM
voluntario v
WHERE
v.id_status = 1
HAVING age >= 60

谢谢!

最佳答案

您的问题不起作用的原因是因为它是一个聚合查询。因此 having 在聚合之后 应用。要在聚合之前 进行过滤,请使用where 子句。

这很容易做到:

SELECT count(*)
FROM voluntario v
WHERE v.id_status = 1 AND
v.birth_date < date_sub(CURDATE(), interval 60 year)

请注意,日期算法是在 CURDATE() 而不是 birth_date 上执行的。这允许将包含 birth_date 的索引用于查询(如果适用)。

SELECT 中包含 age 没有意义,因为(可能)有许多不同的年龄,查询只返回一个不确定的值。

关于mysql - 来自带有过滤器的 MySQL 的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com