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

Ottenere mysql per ignorare dove condizione

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

Non so se MySQL utilizzi mai la valutazione del cortocircuito nel suo piano di esecuzione, ma potrebbe essere utile mettere al primo posto il confronto più economico, come:

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

Puoi utilizzare questa metodologia con più parametri.

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.