我正在尝试计算其日期尚未通过的行数,因此我只能获取当前记录
我收到错误说明
MySQL错误#111无效使用组功能
SELECT COUNT(festivalid) FROM festivals WHERE min(datefrom) > now()
答案 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()
,使查询可以移植到其他数据库。