J'ai examiné la différence entre:
count(*) count(column_name) count(1)
Par exemple: ici: Count (*) vs Count (1) . Certains répondeurs indiquent également: count ('foo'). Pourquoi utiliseriez-vous count ('foo'). Il semble que cela fonctionne:
select count('hello my name is joe bloggs and I finished school about ten years ago') from dbdisposals
Pourquoi passeriez-vous jamais une string à la fonction de count?
L'utilisation de n'importe quelle valeur littérale dans le count
a le même effet que count(*)
, elle count le nombre de lignes dans le groupe. Utiliser count('str')
a le même effet que count(1)
, c'est-à-dire qu'il count les loggings où la valeur n'est pas null
. Comme la valeur littérale ( 'str'
ou 1
) ne sera null
pour aucun des loggings, elle count tous les loggings.
La fonction count
count toutes les valeurs non nulles, de sorte qu'une valeur littérale dans count
a le même effet que count(*)
, mais count(column_name)
count uniquement les valeurs non nulles dans cette colonne.
L'utilisation d'une string littérale en count
fonctionne correctement, la seule raison pour laquelle vous l'éviteriez serait que cela pourrait être source de confusion.