*`COUNT()` est-il toujours garanti, même s'il n'y a pas de correspondance ? **
Il est important de comprendre le comportement de COUNT(*)
lors de l'utilisation de requêtes telles que celles-ci :
<code class="language-sql">SELECT COUNT(*) as num FROM table WHERE x = 'y'</code>
Explication de la requête
Cette requête compte le nombre de lignes dans la table table
où la colonne x
est égale à y
.
*Réponse : Oui, `COUNT()` renvoie toujours un résultat**
Contrairement à d'autres fonctions d'agrégation telles que MAX, SUM ou MIN, qui renvoient une valeur NULL lorsqu'aucun enregistrement ne correspond à la condition, COUNT(*)
renvoie toujours un résultat.
*Cause : `COUNT()` compte les valeurs NULL**
La raison de ce comportement est que COUNT(*)
évalue toutes les lignes du tableau, y compris les lignes avec des valeurs NULL. Par conséquent, COUNT(*)
renvoie toujours 0 même si aucune ligne ne correspond à la condition de la clause WHERE.
Notes supplémentaires :
COUNT(*)
au lieu de COUNT()
pour garantir le calcul des valeurs NULL. COUNT(*)
le retour de zéro ligne s'il n'y a pas de groupes correspondants. Exceptions
Il existe de rares exceptions à cette règle, par exemple :
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!