sql >> Databasteknik >  >> RDS >> Database

Hur man räknar antalet rader i en tabell i SQL

Problem:

Du vill bestämma hur många rader en tabell har.

Exempel:

Vår databas har en tabell som heter pet med data i följande kolumner:id , eID (elektronisk identifierare) och name .

id eID namn
1 23456 gnistrande
2 23457 mily
3 NULL lessy
4 NULL carl
5 34545 maggy

Låt oss räkna alla rader i tabellen.

Lösning:

COUNT(*) räknar det totala antalet rader i tabellen:

SELECT COUNT(*) as count_pet
FROM pet;

Här är resultatet:

count_pet
5

Istället för att skicka in asterisken som argument kan du använda namnet på en specifik kolumn:

SELECT COUNT(id) as count_pet
FROM pet;

I det här fallet, COUNT(id) räknar antalet rader där id är inte NULL .

Diskussion:

Använd COUNT aggregatfunktion för att räkna antalet rader i en tabell. Den här funktionen tar namnet på kolumnen som dess argument (t.ex. id ) och returnerar antalet rader för just denna kolumn i tabellen (t.ex. 5).

Som nämnts ovan, när du anger en kolumn istället för asterisken, kommer funktionen endast att räknas icke-NULL värden. Eftersom id är den primära nyckeln i vår tabell – och därför har unik och icke-NULL värden – det är en bra kandidat för att räkna det totala antalet rader i tabellen.

Naturligtvis, för att räkna alla rader kan du istället skicka in asterisktecknet som argument till COUNT. Detta kommer att räkna alla rader, inklusive de med värdet NULL i valfri kolumn.

Här är ett exempel på hur man räknar antalet rader för en kolumn som har NULL värden:

SELECT COUNT(eID) as count_pet
FROM pet;
count_pet
3

Det rekommenderas att du skickar in en primärnyckelkolumn eller *-tecknet till COUNT-funktionen för att räkna antalet rader i en tabell. Som vi har sett kommer båda metoderna att ge samma resultat.


  1. Förstå HAProxy-statistiken för MySQL och PostgreSQL

  2. Hur man byter namn på databas i SQL Server - SQL Server / TSQL självstudie del 26

  3. Aktivera TLS i Oracle Apps R12.2

  4. Hur drar man tillbaka ett saltat lösenord från databasen och autentiseringsanvändaren?