Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SELECIONAR CONTAGEM(*);


Normalmente, todas as seleções são da forma SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Como isso permite cálculos escalares simples, podemos fazer algo como SELECT 1 + 1 FROM SomeTable e retornará um conjunto de registros com o valor 2 para cada linha na tabela SomeTable .

Agora, se não nos importamos com nenhuma tabela, mas apenas queríamos fazer nosso cálculo escalar, poderíamos fazer algo como SELECT 1 + 1 . Isso não é permitido pelo padrão, mas é útil e a maioria dos bancos de dados permite (o Oracle não permite, a menos que tenha sido alterado recentemente, pelo menos costumava não).

Portanto, esses SELECTs simples são tratados como se tivessem uma cláusula from que especificasse uma tabela com uma linha e nenhuma coluna (impossível, é claro, mas funciona). Portanto, SELECT 1 + 1 torna-se SELECT 1 + 1 FROM ImaginaryTableWithOneRow que retorna uma única linha com uma única coluna com o valor 2 .

Na maioria das vezes, não pensamos nisso, apenas nos acostumamos com o fato de que SELECTs simples dão resultados e nem pensamos no fato de que deve haver alguma coisa de uma linha selecionada para retornar uma linha.

Ao fazer SELECT COUNT(*) você fez o equivalente a SELECT COUNT(*) FROM ImaginaryTableWithOneRow que obviamente retorna 1.