Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego potrzebuję OR NULL w MySQL podczas liczenia wierszy z warunkiem?

Powinno to ujawnić wszystkie

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

Wyjście

1   |   0   |   1   |   NULL

Fakty

  1. COUNT dodaje kolumny/wyrażenia, których wynikiem jest NOT NULL. Wszystko zostanie zwiększone o 1, o ile nie będzie puste. Wyjątkiem jest COUNT(DISTINCT), gdzie zwiększa się tylko wtedy, gdy nie został jeszcze zliczony.

  2. Kiedy wyrażenie BOOLEAN jest używane samodzielnie, zwraca 1 lub 0.

  3. Gdy wartość logiczna to OR -ed z NULL, jest NULL tylko wtedy, gdy jest to 0 (fałsz)

Do innych

Tak, jeśli liczba jest TYLKO pożądaną kolumną, można użyć WHERE value=4 ale jeśli jest to zapytanie, które chce policzyć czwórki oraz pobiera inne liczby/agregaty, wtedy filtr nie działa. Alternatywą byłoby SUM(value=4) , np.

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, Połącz dwie kolumny

  2. Odpowiednik Java dla mysql_real_escape_string() PHP

  3. Jak sprawić, by wiele LEFT JOIN z OR w pełni wykorzystywało indeks złożony? (część 2)

  4. Jak tworzyć tymczasowe procedury w MySQL?

  5. Sprawdź, czy nazwa użytkownika już istnieje w bazie danych MySQL PHP