sql >> Database teknologi >  >> RDS >> Sqlserver

VÆLG ANTAL(*);

Normalt er alle valg af formen SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Fordi dette tillader almindelige skalære beregninger, kan vi gøre noget som SELECT 1 + 1 FROM SomeTable og det vil returnere et postsæt med værdien 2 for hver række i tabellen SomeTable .

Hvis vi nu var ligeglade med nogen tabel, men bare ville lave vores skalarberegning, ville vi måske gøre noget som SELECT 1 + 1 . Dette er ikke tilladt af standarden, men det er nyttigt, og de fleste databaser tillader det (Oracle gør det ikke, medmindre det er ændret for nylig, i det mindste plejede det ikke at gøre det).

Derfor behandles sådanne bare SELECT'er, som om de havde en fra-klausul, der specificerede en tabel med en række og ingen kolonne (umuligt selvfølgelig, men det gør tricket). Derfor SELECT 1 + 1 bliver SELECT 1 + 1 FROM ImaginaryTableWithOneRow som returnerer en enkelt række med en enkelt kolonne med værdien 2 .

For det meste tænker vi ikke over dette, vi vænner os bare til, at bare SELECT giver resultater og tænker ikke engang på, at der skal være valgt en række ting for at returnere en række.

Ved at gøre SELECT COUNT(*) du gjorde det, der svarer til SELECT COUNT(*) FROM ImaginaryTableWithOneRow hvilket naturligvis returnerer 1.



  1. SQL tidsforskel mellem to datoer resulterer i tt:mm:ss

  2. Sådan afkortes tabel i MySQL

  3. Hvordan kontrollerer man, om en værdi allerede eksisterer for at undgå dubletter?

  4. Sådan kopieres en tabel fra en mysql-database til en anden mysql-database