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

Får mysql til at ignorere where condition

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

Jeg ved ikke, om MySQL nogensinde bruger kortslutningsevaluering i sin udførelsesplan, men det kan være en fordel at sætte den billigere sammenligning først, som:

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

Du kan bruge denne metode med flere parametre.

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. Skinner migration Opret tabel primær nøgle

  2. Udfylder manglende datoer efter gruppe

  3. Dynamisk minimumsværdi for specifikt område (mysql)

  4. MySQL fjerner duplikerede rækker