sql >> Database >  >> RDS >> Mysql

Mysql laten negeren waar voorwaarde

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

Ik weet niet of MySQL ooit kortsluitingsevaluatie gebruikt in het uitvoeringsplan, maar het kan nuttig zijn om eerst de goedkopere vergelijking te plaatsen, zoals:

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

U kunt deze methode gebruiken met meerdere parameters.

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. 11 veelvoorkomende SQL-statements met basisvoorbeelden

  2. 2 voorbeelddatabases voor SQLite

  3. Maak een nieuwe Ruby on Rails-toepassing met MySQL in plaats van SQLite

  4. SQLAlchemy:Hoe te verwijderen met join