sql >> Database >  >> RDS >> Mysql

Waarom heb ik OR NULL nodig in MySQL bij het tellen van rijen met een voorwaarde?

Dit zou alles moeten onthullen

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

Uitgang

1   |   0   |   1   |   NULL

Feiten

  1. COUNT telt de kolommen/expressies op die resulteren in NOT NULL. Alles wordt met 1 verhoogd, zolang het maar niet nul is. Uitzondering is COUNT(DISTINCT) waarbij het alleen wordt verhoogd als het nog niet is geteld.

  2. Wanneer een BOOLEAN-expressie op zichzelf wordt gebruikt, geeft deze 1 of 0 terug.

  3. Wanneer een boolean OR . is -ed met NULL, het is alleen NULL als het 0 is (false)

Aan anderen

Ja, als de telling de ENIGE gewenste kolom is, kan men WHERE value=4 . gebruiken maar als het een zoekopdracht is die de 4's evenals . wil tellen andere tellingen/aggregaten ophalen, dan werkt het filter niet. Een alternatief zou zijn geweest SUM(value=4) , bijv.

SELECT sum(value=4)
  FROM test


  1. MySql:alleen-lezen opties verlenen?

  2. Trigger in SQL

  3. Hoe vind je de meest populaire woordvoorvallen in MySQL?

  4. Auto's verhuren is net zo eenvoudig als autorijden:een gegevensmodel voor een autoverhuurbedrijf