считая строк, эта дата еще не прошла - PullRequest
2 голосов
/ 06 апреля 2010

Я пытаюсь подсчитать количество строк, дата которых еще не прошла, поэтому я могу получить только текущие записи

Я получаю ошибку sayng

Ошибка MySQL # 111Неправильное использование групповой функции

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

Ответы [ 3 ]

4 голосов
/ 06 апреля 2010
SELECT COUNT(festivalid) 
FROM festivals 
WHERE datefrom > now() 

Не используйте функцию min. Это выбирает минимальную дату, которая не является тем, что вы ищете.

Функция min обычно используется следующим образом

SELECT MIN(dateFrom) FROM festivals
3 голосов
/ 06 апреля 2010

не используйте MIN ...

SELECT COUNT(festivalid) FROM festivals WHERE datefrom > now() 
2 голосов
/ 06 апреля 2010

Причина ошибки в том, что вы не можете использовать агрегатные (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(), что делает запрос переносимым на другие базы данных.

...