2

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

我收到一个错误说

MySQL 错误 #111 组函数使用无效

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

3 回答 3

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

不要使用 min 函数。这会选择不是您要查找的最短日期。

min函数通常使用如下

SELECT MIN(dateFrom) FROM festivals
于 2010-04-06T19:18:22.043 回答
3

不要使用MIN...

SELECT COUNT(festivalid) FROM festivals WHERE datefrom > now() 
于 2010-04-06T19:18:08.740 回答
2

错误的原因是您不能在子句中使用聚合(IE:MIN,MAX,COUNT...)函数WHERE- 只有在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()的,使查询可移植到其他数据库。

于 2010-04-06T19:21:34.847 回答