sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor skal jeg bruge OR NULL i MySQL, når jeg tæller rækker med en betingelse

Dette burde afsløre alt

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

Output

1 | 0 | 1 | NULL

Fakta

  1. COUNT summerer de kolonner/udtryk, der evalueres til IKKE NULL. Alt vil stige med 1, så længe det ikke er nul. Undtagelsen er COUNT(DISTINCT), hvor den kun stiger, hvis den ikke allerede er talt.

  2. Når et BOOLEAN-udtryk bruges alene, returnerer det enten 1 eller 0.

  3. Når en boolean er OR -ed med NULL, er det kun NULL, når det er 0 (falsk)

Til andre

Ja, hvis antallet er den ENESTE ønskede kolonne, kunne man bruge WHERE value=4 men hvis det er en forespørgsel, der ønsker at tælle 4'erne såvel som henter andre tællinger/aggregater, så virker filteret ikke. Et alternativ ville have været SUM(value=4) , f.eks.

SELECT sum(value=4)
  FROM test
 


  1. Hvordan tillader man tom streng for heltal i MySQL?

  2. Flydende NHibernate DuplicateMappingException med AutoMapping

  3. hvad er escape-sekvensen for bindestreg (-) i PostgreSQL

  4. Oracle DBA spørgsmål i realtid