我正在尝试计算日期尚未过去的行数,因此我只能获取当前记录
我收到一个错误说
MySQL 错误 #111 组函数使用无效
SELECT COUNT(festivalid) FROM festivals WHERE min(datefrom) > now()
我正在尝试计算日期尚未过去的行数,因此我只能获取当前记录
我收到一个错误说
MySQL 错误 #111 组函数使用无效
SELECT COUNT(festivalid) FROM festivals WHERE min(datefrom) > now()
SELECT COUNT(festivalid)
FROM festivals
WHERE datefrom > now()
不要使用 min 函数。这会选择不是您要查找的最短日期。
min函数通常使用如下
SELECT MIN(dateFrom) FROM festivals
不要使用MIN...
SELECT COUNT(festivalid) FROM festivals WHERE datefrom > now()
错误的原因是您不能在子句中使用聚合(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()
的,使查询可移植到其他数据库。