给定一个带有包含时间戳的列的表,我想计算TIMEDIFF(now(), timeStamp)大于某个值的实例数。我遇到的问题是将所有这些实现为声明。我的努力:

SELECT COUNT*()
FROM sometable
WHERE (SELECT TIMEDIFF(now(),column_from_sometable) > 10


我只是不太确定如何在where语句中使用TIMEDIFF进行比较。 (显然,您必须使用SELECT来调用该方法,然后我不确定在该语句中如何从sometable访问列)。

最佳答案

如果列column_from_sometable属于同一表sometable,则不需要子选择。您可以在WHERE条件中包括

SELECT COUNT(*)
FROM sometable
WHERE TIMEDIFF(now(),column_from_sometable) > 10


您也可以通过在汇总函数中添加条件来简化此操作,例如

SELECT SUM(CASE WHEN TIMEDIFF(now(),column_from_sometable) > 10 THEN 1 ELSE 0 END)
FROM sometable

10-05 23:38