sql >> Base de Datos >  >> RDS >> Sqlserver

SELECCIONE CUENTA(*);

Normalmente, todas las selecciones tienen la forma SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Debido a que esto permite cálculos escalares simples, podemos hacer algo como SELECT 1 + 1 FROM SomeTable y devolverá un conjunto de registros con el valor 2 para cada fila en la tabla SomeTable .

Ahora, si no nos importa ninguna tabla, pero solo queremos hacer nuestro cálculo escalar, podríamos querer hacer algo como SELECT 1 + 1 . Esto no está permitido por el estándar, pero es útil y la mayoría de las bases de datos lo permiten (Oracle no lo permite a menos que haya cambiado recientemente, al menos antes).

Por lo tanto, estos SELECT simples se tratan como si tuvieran una cláusula from que especificara una tabla con una fila y sin columna (imposible, por supuesto, pero funciona). Por lo tanto SELECT 1 + 1 se convierte en SELECT 1 + 1 FROM ImaginaryTableWithOneRow que devuelve una sola fila con una sola columna con el valor 2 .

En general, no pensamos en esto, simplemente nos acostumbramos al hecho de que los SELECT simples dan resultados y ni siquiera pensamos en el hecho de que debe haber algo de una fila seleccionado para devolver una fila.

Al hacer SELECT COUNT(*) hiciste el equivalente a SELECT COUNT(*) FROM ImaginaryTableWithOneRow que por supuesto devuelve 1.