Maison >base de données >tutoriel mysql >COUNT(*) vs COUNT(Column) : quelle est la différence en SQL ?

COUNT(*) vs COUNT(Column) : quelle est la différence en SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-13 14:57:43588parcourir

COUNT(*) vs. COUNT(Column): What's the Difference in SQL?

*COUNT () et COUNT (nom de la colonne) en SQL : différences subtiles mais importantes**

Lors de l'utilisation de requêtes SQL, il est crucial de comprendre les subtilités des différentes fonctions d'agrégation telles que COUNT(*) et COUNT(column name). Cet article vise à clarifier les différences subtiles mais importantes entre ces deux fonctions.

*Comparaison de COUNT (nom de la colonne) et COUNT ()**

COUNT (nom de la colonne) compte le nombre de valeurs non nulles dans la colonne spécifiée. Cette fonction détermine le nombre de valeurs existant dans une colonne qui répondent à des critères spécifiés.

COUNT(*), en revanche, compte toutes les lignes du tableau, qu'elles contiennent ou non des valeurs nulles. On l'appelle parfois le « quantificateur universel » car il prend en compte chaque ligne du tableau, renvoyant effectivement le nombre total de lignes.

Exemple pratique

Considérons la requête suivante qui compte le nombre de valeurs en double dans une table :

<code class="language-sql">select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;</code>

Dans cette requête, la fonction COUNT(column_name) est utilisée pour compter le nombre d'occurrences de valeurs non nulles dans la colonne spécifiée (column_name). Si une valeur apparaît plusieurs fois non nulle, la ligne est considérée comme un doublon.

Si nous remplaçons la fonction COUNT(column_name) par COUNT(*) dans cette requête, les résultats seront légèrement différents. La requête modifiée renvoie une ligne supplémentaire dans le jeu de résultats qui contient une valeur nulle pour la colonne nom_colonne et le nombre total de lignes de la table (y compris les lignes contenant des valeurs nulles).

Démo

Pour illustrer cette différence, considérons le code SQL suivant :

<code class="language-sql">create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)

select count(*),count(id),count(id2)
from #bla</code>

Les résultats de l'exécution de cette requête sont les suivants :

<code>7   3   2</code>

La fonction COUNT(*) renvoie 7, indiquant le nombre total de lignes dans le tableau. La fonction COUNT(id) renvoie 3, qui représente le nombre de lignes avec des valeurs non nulles dans la colonne id. La fonction COUNT(id2) renvoie 2, indiquant le nombre de lignes avec des valeurs non nulles dans la colonne id2.

Pour résumer, la principale différence entre COUNT(Column Name) et COUNT() est que COUNT() inclut les valeurs nulles dans son décompte, tandis que COUNT(Column Name) les exclut. Comprendre cette distinction est essentiel pour une analyse précise des données et l’optimisation des requêtes.

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