计算日期尚未过去的行

时间:2010-04-06 19:15:59

标签: sql mysql mysql-error-1111

我正在尝试计算其日期尚未通过的行数,因此我只能获取当前记录

我收到错误说明

  

MySQL错误#111无效使用组功能

SELECT COUNT(festivalid) FROM festivals WHERE min(datefrom) > now() 

3 个答案:

答案 0 :(得分:4)

SELECT COUNT(festivalid) 
FROM festivals 
WHERE datefrom > now() 

不要使用min功能。这将选择不是您要查找的最小日期。

min函数通常按如下方式使用

SELECT MIN(dateFrom) FROM festivals

答案 1 :(得分:3)

不要使用MIN ......

SELECT COUNT(festivalid) FROM festivals WHERE datefrom > now() 

答案 2 :(得分:2)

错误的原因是您不能在WHERE子句中使用聚合(IE:MIN,MAX,COUNT ...)函数 - 只有在HAVING子句中才能执行此操作。要定义HAVING子句,您的查询需要定义GROUP BY子句:

  SELECT COUNT(f.festivalid)
    FROM FESTIVALS f
GROUP BY ? --festivalid would NOT be an ideal choice
  HAVING MIN(datefrom) > now()

...但我对查询有疑问,并认为最好使用:

SELECT COUNT(f.festivalid) 
  FROM FESTIVALS f
 WHERE f.datefrom > CURRENT_TIMESTAMP

CURRENT_TIMESTAMP是ANSI标准,等同于MySQL特定的NOW(),使查询可以移植到其他数据库。