*Fonction de comptage SQL : Différences et scénarios d'application entre COUNT(column) et COUNT()**
Dans les bases de données SQL, les opérations de comptage sont des fonctions basiques et couramment utilisées. Cependant, le choix de COUNT(column)
et COUNT(*)
affectera directement les résultats. Cet article plongera dans les principales différences entre ces deux fonctions de comptage.
COUNT(column)
La fonction compte le nombre de valeurs non NULL dans la colonne spécifiée. Si une ligne contient une valeur NULL dans cette colonne, la ligne sera exclue du décompte. Cette fonctionnalité est utile lors du comptage de valeurs uniques ou de points de données spécifiques.
D'autre part, la fonction COUNT(*)
compte le nombre total de lignes dans le regroupement sélectionné, que la colonne contienne ou non des valeurs NULL. Il compte à la fois les valeurs non NULL et les valeurs NULL.
Cette différence devient apparente lorsqu'il s'agit de tables contenant des valeurs NULL. Par exemple, considérons la requête suivante :
<code class="language-sql">SELECT column_name, COUNT(column_name) FROM table GROUP BY column_name HAVING COUNT(column_name) > 1;</code>
Cette requête récupère les groupes de lignes où la valeur de column_name
apparaît plus d'une fois. Cependant, si nous remplaçons COUNT(column_name)
par COUNT(*)
, nous rencontrons des problèmes potentiels.
Avec COUNT(*)
, la requête comptera toutes les lignes de chaque groupe, y compris celles contenant des valeurs NULL dans column_name
. Cela peut entraîner une ligne supplémentaire dans la sortie contenant les valeurs NULL et leur nombre de valeurs NULL.
Pour illustrer cela, considérons un tableau contenant les données suivantes :
id | id2 |
---|---|
NULL | NULL |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | NULL |
La requête suivante utilisant COUNT(id)
renverra les résultats corrects :
<code class="language-sql">SELECT id, COUNT(id) FROM table GROUP BY id HAVING COUNT(id) > 1;</code>
Sortie :
id | COUNT(id) |
---|---|
1 | 3 |
Cependant, si nous utilisons COUNT(*)
nous obtiendrons des lignes supplémentaires :
<code class="language-sql">SELECT id, COUNT(*) FROM table GROUP BY id HAVING COUNT(*) > 1;</code>
Sortie :
id | COUNT(*) |
---|---|
1 | 3 |
NULL | 2 |
Comme indiqué ci-dessus, le résultat utilisant COUNT(*)
contient une ligne supplémentaire où id
est NULL et un nombre de 2, indiquant le nombre de lignes contenant des valeurs NULL id
.
Par conséquent, le choix de COUNT(column)
et COUNT(*)
dépend des données spécifiques et des résultats souhaités. COUNT(column)
est plus approprié pour compter les valeurs non NULL, tandis que COUNT(*)
est utilisé pour compter toutes les lignes, y compris celles contenant des valeurs 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!