Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von CASE in der WHERE-Klausel

Sie müssen CASE...WHEN nicht verwenden, Sie könnten eine ODER-Bedingung wie diese verwenden:

WHERE
  pw='correct'
  AND (id>=800 OR success=1) 
  AND YEAR(timestamp)=2011

Das bedeutet, dass bei id<800 der Erfolg 1 sein muss, damit die Bedingung als wahr bewertet wird. Andernfalls wird es trotzdem wahr sein.

Es ist weniger gebräuchlich, aber Sie könnten trotzdem CASE WHEN wie folgt verwenden:

WHERE
  pw='correct'
  AND CASE WHEN id<800 THEN success=1 ELSE TRUE END 
  AND YEAR(timestamp)=2011

das bedeutet:gib success=1 zurück (was WAHR oder FALSCH sein kann) falls id<800, oder sonst immer WAHR zurückgeben.