sql >> Databáze >  >> RDS >> Mysql

Získání mysql, aby ignoroval podmínku kde

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

Nevím, jestli MySQL někdy používá vyhodnocení zkratu v jeho prováděcím plánu, ale může být užitečné dát na první místo levnější srovnání, například:

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

Tuto metodologii můžete použít s více parametry.

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. MySql:Řazení podle a skupiny Kombinací neuvádí nejnovější záznam

  2. Zastaralé funkce, které je třeba vyjmout ze sady nástrojů – část 1

  3. Oprava „CHYBA:  každý dotaz UNION musí mít stejný počet sloupců“ v PostgreSQL

  4. Převeďte vybrané hodnoty sloupce na jiný řádek pomocí select se stejným ID part2