count('email')
count(1)
count(-100)
☕️ Давайте разбираться
Есть табличка emails:
1 hello@gmail.com
2 null
3 null
4 hello@mail.ru⭐️Что выведет каждый из запросов?
email ==
`email` == "email" Эти три конструкции одинаковы, они обозначают само поле.
Кавычки нужны, когда название поля - это ключевое слово или когда написано на русском.
По условию email - уникальное, поэтому
count(email) == count(distinct email)
📍count не считает нуллы
Поэтому в нашем примере по всем этим 6 запросам будет ответ 2.
Ответ - 2.
🦶 Идем дальше
count('email') - здесь мы подаем на вход строку с названием 'email' (не поле!)
Т.е. на вход каунту будет так:
1 email
2 email
3 email
4 emailМы по сути считаем количество строк.
Ответ - 4.
Аналогично для этих двух запросов:
count(1)
count(-100)
Вообще неважно, что писать в скобках, хоть '2340sdjf2фыа934!-3/'. Результат всегда - это количество строк.
1 -100
2 -100
3 -100
4 -100Ответ - 4.
Ну и в count(distinct 'email') получается, что мы берем уникальные строки 'email'. А они везде одинаковые.
Ответ - 1.