sql >> Databáze >  >> RDS >> Mysql

Proč potřebuji OR NULL v MySQL při počítání řádků s podmínkou

To by mělo odhalit vše

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

Výstup

1   |   0   |   1   |   NULL

Fakta

  1. COUNT sečte sloupce / výrazy, které se vyhodnotí jako NOT NULL. Cokoli se zvýší o 1, pokud to není null. Výjimkou je COUNT(DISTINCT), kde se zvyšuje, pouze pokud již není započítán.

  2. Když je výraz BOOLEAN použit samostatně, vrátí buď 1, nebo 0.

  3. Když je logická hodnota OR -ed s NULL, je NULL, pouze když je 0 (nepravda)

Ostatním

Ano, pokud je počet požadovaným JEDINÝM sloupcem, lze použít WHERE value=4 ale pokud se jedná o dotaz, který chce počítat 4 stejně jako načtení dalších počtů/agregátů, pak filtr nefunguje. Alternativou by bylo SUM(value=4) , např.

SELECT sum(value=4)
  FROM test


  1. Existuje efektivnější způsob stránkování v Hibernate než provádění výběrových a počítání dotazů?

  2. MariaDB FOUND_ROWS() Vysvětleno

  3. Jak aktualizovat stejnou tabulku při smazání v MYSQL?

  4. Vypočítejte rozdíl mezi dvěma daty a časy v MySQL