sql >> Databasteknik >  >> RDS >> Mysql

Få mysql att ignorera where condition

SELECT *
FROM foo
WHERE id = $id
AND ( bar = $baz OR $baz [equals null, empty string, zero, whatever] )

Jag vet inte om MySQL någonsin använder kortslutningsutvärdering i sin utförandeplan, men det kan vara fördelaktigt att sätta den billigare jämförelsen först, som:

SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )

Du kan använda denna metod med flera parametrar.

SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )
AND ( $x = 0 or x = $x )
AND ( $y IS NULL OR y = $y )

-- etc.


  1. 500 internt serverfel?

  2. Kombinera resultat från två tabeller till JSON-data

  3. Det finns i detaljerna

  4. Django AWS RDS MySQL-fel:(2026, 'SSL-anslutningsfel:error:00000001:lib(0):func(0):reason(1)')