Maison >base de données >tutoriel mysql >COUNT(*) vs. COUNT(column_name) : quelle est la différence dans MySQL ?

COUNT(*) vs. COUNT(column_name) : quelle est la différence dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-21 06:39:111040parcourir

COUNT(*) vs. COUNT(column_name): What's the Difference in MySQL?

Comprendre la différence entre COUNT(*) et COUNT(column_name)

MySQL fournit deux fonctions de comptage : COUNT(*) et COUNT( nom_colonne). Les deux fonctions comptent le nombre de lignes dans un ensemble de résultats, mais elles diffèrent dans leur gestion des valeurs NULL.

COUNT(*)

  • Compte toutes les lignes dans l'ensemble de résultats, y compris les lignes avec des valeurs NULL dans n'importe quelle colonne.
  • Syntaxe : COUNT(*)

COUNT(column_name)

  • Compte uniquement les lignes où la colonne spécifiée (nom_colonne) n'est PAS NULL.
  • Syntaxe : COUNT(nom_colonne)

Différences clés

Feature COUNT(*) COUNT(column_name)
NULL Values Includes rows with NULL values Excludes rows with NULL values
Performance May be slower in some cases even if the column has no NULL values Generally slower due to the need to check each value

COUNT(1)

COUNT(1) est équivalent à COUNT(*). C'est parce que 1 ne peut jamais être NULL. Par conséquent, il compte également toutes les lignes de l'ensemble de résultats.

Exemple

Considérez le tableau suivant nommé "table1" :

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);

Maintenant , comparons les résultats des trois fonctions de comptage :

SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Résultat :

a   b   c
3   2   3

Comme vous pouvez le voir, COUNT() compte tout trois lignes, quelle que soit la valeur NULL dans la colonne "x". COUNT(x) exclut la ligne avec la valeur NULL, ce qui donne un décompte de 2. COUNT(1) donne le même résultat que COUNT() puisque 1 ne peut pas être NULL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn