現在のレコードのみを取得できるように、日付がまだ経過していない行の数を数えようとしています
というエラーが表示されます
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
MySQL 固有NOW()
の ANSI 標準に相当し、クエリを他のデータベースに移植可能にします。