Mysql
 sql >> база данни >  >> RDS >> Mysql

count(*) и count(column_name), каква е разликата?

  • COUNT(*) преброява всички редове в резултатния набор (или група, ако се използва GROUP BY).
  • COUNT(column_name) отчита само онези редове, където column_name НЕ е NULL. Това може да е по-бавно в някои ситуации, дори ако няма стойности NULL, защото стойността трябва да бъде проверена (освен ако колоната не може да бъде нула).
  • COUNT(1) е същото като COUNT(*) тъй като 1 никога не може да бъде NULL.

За да видите разликата в резултатите, можете да опитате този малък експеримент:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Резултат:

a   b   c
3   2   3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Doctrine 2 mysql FIELD функция в ред по

  2. Как да конвертирате низ в шестнадесетичен в MySQL – HEX()

  3. Мониторинг на база данни - Отстраняване на неизправности в Prometheus с табла за управление на SCUMM

  4. Зареждане на класа com.mysql.jdbc.Driver ... е отхвърлено съобщение

  5. MySQL сравнява низ DATE с низ от поле DATETIME