sql >> Databasteknik >  >> RDS >> Mysql

Varför behöver jag OR NULL i MySQL när jag räknar rader med ett villkor

Detta borde avslöja allt

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

Utdata

1   |   0   |   1   |   NULL

Fakta

  1. COUNT lägger ihop kolumnerna/uttrycken som evalueras till NOT NULL. Allt kommer att öka med 1, så länge det inte är null. Undantaget är COUNT(DISTINCT) där det endast ökar om det inte redan har räknats.

  2. När ett BOOLEAN-uttryck används ensamt, returnerar det antingen 1 eller 0.

  3. När en boolean är OR -ed med NULL, är det NULL endast när det är 0 (falskt)

Till andra

Ja om antalet är den ENDA kolumn som önskas kan man använda WHERE value=4 men om det är en fråga som vill räkna 4:orna och hämtar andra räkningar/aggregat, då fungerar inte filtret. Ett alternativ skulle ha varit SUM(value=4) , t.ex.

SELECT sum(value=4)
  FROM test


  1. Distribuera och hantera MySQL NDB Cluster med ClusterControl

  2. Rekommendationer för prestandajustering av MySQL my.cnf

  3. Nackdelar med att lagra bilder i en databas?

  4. Hur man ställer in statusfältsfärg i SSMS för olika SQL Server-instanser - SQL Server / TSQL självstudie del 6