Поддержка ANSI выбора количества SQLStatements - PullRequest
1 голос
/ 21 января 2012

Мне интересно, есть ли список поддерживаемых операторов SQL Select Count согласно стандарту ANSI?Ниже приведены три варианта, о которых я знаю.Можно ли использовать фразу where для всех трех ниже?

SELECT COUNT(*) AS RowCount FROM table_name
SELECT COUNT(ColumnName) AS RowCount FROM table_name
SELECT COUNT(DISTINCT ColumnName) AS RowCount FROM table_name

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Стандарт SQL, который используется практически во всех СУБД, - это стандарт ANSI 92, который можно найти по адресу http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt.. Он содержит информацию, которую вы ищете.Большинство СУБД предлагают что-то в дополнение к стандарту ANSI 92, но это своего рода наименьший общий знаменатель из всех.

0 голосов
/ 21 января 2012

Стандартные спецификации придают особое значение COUNT(*).В противном случае ColumnName - это любое допустимое выражение, определяемое реализацией.

Кстати, вы пропустили одно:

SELECT COUNT(ALL ColumnName) AS RowCount FROM table_name;

Как и в случае SELECT ALL, ALL является значением по умолчанию и может быть опущено - и почти всегда -!

...