sql >> Database >  >> RDS >> Sqlserver

SELECTEER AANTAL(*);

Normaal gesproken hebben alle selecties de vorm SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Omdat dit eenvoudige scalaire berekeningen mogelijk maakt, kunnen we iets doen als SELECT 1 + 1 FROM SomeTable en het retourneert een recordset met de waarde 2 voor elke rij in de tabel SomeTable .

Nu, als we niet om een ​​tabel gaven, maar gewoon onze scalaire berekeningen wilden doen, zouden we misschien iets willen doen als SELECT 1 + 1 . Dit is niet toegestaan ​​door de standaard, maar het is handig en de meeste databases staan ​​het toe (Oracle niet, tenzij het recentelijk is gewijzigd, in ieder geval niet).

Daarom worden dergelijke kale SELECT's behandeld alsof ze een from-clausule hebben die een tabel specificeert met één rij en geen kolom (natuurlijk onmogelijk, maar het werkt). Vandaar SELECT 1 + 1 wordt SELECT 1 + 1 FROM ImaginaryTableWithOneRow die een enkele rij retourneert met een enkele kolom met de waarde 2 .

Meestal denken we hier niet over na, we wennen er gewoon aan dat kale SELECT's resultaten geven en denken niet eens na over het feit dat er iets met één rij moet zijn geselecteerd om één rij terug te geven.

Door SELECT COUNT(*) . te doen je deed het equivalent van SELECT COUNT(*) FROM ImaginaryTableWithOneRow wat natuurlijk 1 teruggeeft.



  1. MySQL TABLE-instructie

  2. Is er een manier om te 'luisteren' naar een databasegebeurtenis en een pagina in realtime bij te werken?

  3. Rails waar clausule wanneer iets wordt opgeslagen als array

  4. Waarschuwing krijgen:Null-waarde wordt geëlimineerd door een aggregatie of andere SET-bewerking