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_TIMESTAMPMySQL 固有NOW()の ANSI 標準に相当し、クエリを他のデータベースに移植可能にします。

于 2010-04-06T19:21:34.847 に答える