Действительно РАССЧИТЫВАЕТ (*), всегда возвращают результат?

Если я выполняю запрос, такой как:

SELECT COUNT(*) as num FROM table WHERE x = 'y'

Это будет всегда возвращать результат, даже когда запрос не соответствует никакой записи? Или я должен проверить и удостовериться, что строка возвращается как результат?

31
задан gbn 30 April 2011 в 15:47
поделиться

6 ответов

Да, потому что это агрегат и возвращает ноль. Если вы не добавите GROUP BY, в этом случае нет результата, потому что нет группы. ..

MAX / SUM и т. Д. Вернет NULL, если вы не добавите GROUP BY, а затем никаких строк. Только COUNT возвращает число без результатов

Редактировать, немного поздно: SUM вернет NULL, как MAX

Edit, май 2013: это относится ко всем основным СУБД. Полагаю, согласно стандарту ANSI

46
ответ дан 27 November 2019 в 22:00
поделиться

Да, он всегда будет возвращать числовое значение

2
ответ дан 27 November 2019 в 22:00
поделиться

Агрегатная функция Count () всегда возвращает значение

5
ответ дан 27 November 2019 в 22:00
поделиться

если ни одна запись не найдена, счетчик вернет 0. (так что да, счетчик всегда возвращает результат, если только у вас нет синтаксической ошибки )

2
ответ дан 27 November 2019 в 22:00
поделиться

Да, в таких случаях возвращается 0.

2
ответ дан 27 November 2019 в 22:00
поделиться

Всегда будет такая строка результата:

| COUNT(*) |
------------
| 0        |

, если совпадений нет.

Кстати, я бы предпочел считать только первичный ключ вместо * .

2
ответ дан 27 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: