sql >> Database teknologi >  >> RDS >> Mysql

count(*) og count(column_name), hvad er forskellen?

  • COUNT(*) tæller alle rækker i resultatsættet (eller gruppen, hvis der bruges GROUP BY).
  • COUNT(column_name) tæller kun de rækker, hvor column_name er IKKE NULL. Dette kan være langsommere i nogle situationer, selvom der ikke er nogen NULL-værdier, fordi værdien skal kontrolleres (medmindre kolonnen ikke kan nulstilles).
  • COUNT(1) er det samme som COUNT(*) da 1 aldrig kan være NULL.

For at se forskellen i resultaterne kan du prøve dette lille eksperiment:

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. Typer af tabelrelationer i MS Access

  2. Hvordan RANK() virker i SQL Server

  3. Kommaseparerede værdier i Oracle

  4. Implementering af PostgreSQL på en Docker-container