sql >> Databasteknik >  >> RDS >> Mysql

count(*) och count(column_name), vad är skillnaden?

  • COUNT(*) räknar alla rader i resultatuppsättningen (eller gruppen om du använder GROUP BY).
  • COUNT(column_name) Räknar bara de rader där column_name är INTE NULL. Detta kan vara långsammare i vissa situationer även om det inte finns några NULL-värden eftersom värdet måste kontrolleras (såvida kolumnen inte är nullbar).
  • COUNT(1) är samma som COUNT(*) eftersom 1 aldrig kan vara NULL.

För att se skillnaden i resultaten kan du prova detta lilla experiment:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Resultat:

a   b   c
3   2   3


  1. Hur validerar man e-postadress med PL/SQL?

  2. Hur man visar nollvärden när man kör frågor i psql (PostgreSQL)

  3. Hur man installerar SQL Server på Windows

  4. SQL Server 2016:Skapa en tabell från ett SQL-skript