sql >> Databasteknik >  >> RDS >> Mysql

Vad är skillnaden mellan count(0), count(1) och count(*) i mySQL/SQL?

Ingenting egentligen, om du inte anger ett fält i en tabell eller ett uttryck inom parentes istället för konstanta värden eller *

Låt mig ge dig ett detaljerat svar. Count kommer att ge dig icke-null postnummer för givet fält. Säg att du har en tabell som heter A

select 1 from A
select 0 from A
select * from A

kommer alla att returnera samma antal poster, det vill säga antalet rader i tabell A. Utgången är fortfarande annorlunda. Om det finns 3 poster i tabellen. Med X och Y som fältnamn

select 1 from A will give you

1
1
1

select 0 from A will give you
0
0
0

select * from A will give you ( assume two columns X and Y is in the table )
X      Y
--     --
value1 value1
value2 (null)
value3 (null)

Så alla tre frågorna returnerar samma nummer. Såvida du inte använder

select count(Y) from A 

eftersom det bara finns ett icke-nullvärde får du 1 som utdata



  1. Hur FIELD() fungerar i MariaDB

  2. Vad är generellt snabbare, att greppa igenom filer eller köra en SQL LIKE %x%-fråga genom blobbar?

  3. Är mysqli_real_escape_string tillräckligt för att undvika SQL-injektion eller andra SQL-attacker?

  4. Operationen är inte giltig för tillståndet för transaktionsfelet och transaktionsomfånget