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

Защо имам нужда от OR NULL в MySQL при броене на редове с условие

Това трябва да разкрие всичко

SELECT 4=4, 3=4, 1 or null, 0 or null

Изход

1   |   0   |   1   |   NULL

Факти

  1. COUNT събира колоните/изразите, които се оценяват на NOT NULL. Всичко ще се увеличи с 1, стига да не е нула. Изключение е COUNT(DISTINCT), където се увеличава само ако вече не е преброен.

  2. Когато БУЛЕВ израз се използва самостоятелно, той връща 1 или 0.

  3. Когато булева е OR -ed с NULL, то е NULL само когато е 0 (false)

На други

Да, ако броят е ЕДИНСТВЕНАТА желана колона, може да се използва WHERE value=4 но ако това е заявка, която иска да преброи 4-те както и извличане на други бройки/агрегати, тогава филтърът не работи. Алтернатива би била SUM(value=4) , напр.

SELECT sum(value=4)
  FROM test


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ORDER BY поле за дата, което не е във формат на дата

  2. str_replace в SQL АКТУАЛИЗИРАНЕ?

  3. Чувствителни ли са имената на колона и таблица в MySQL?

  4. Две вмъквания в PHP/MySQL с помощта на LAST_INSERT_ID() и редове от друга таблица

  5. Парола по подразбиране на mysql в ubuntu сървър 16.04