sql >> Databasteknik >  >> RDS >> Mysql

använder CASE i WHERE-satsen

Du behöver inte använda CASE...NÄR kan du använda ett OR-villkor, så här:

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

detta betyder att om id<800 måste framgången vara 1 för att villkoret ska utvärderas som sant. Annars kommer det att vara sant ändå.

Det är mindre vanligt, men du kan fortfarande använda CASE WHEN, så här:

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

detta betyder:returnera success=1 (som kan vara TRUE eller FALSE) i case id<800, eller alltid returnera TRUE annars.



  1. Trunkera alla tabeller (varav de flesta har begränsningar). Hur man tillfälligt släpper dem

  2. MySQL-jämförelse med nullvärde

  3. Blockerar '0000-00-00' från MySQL-datumfält

  4. 1:a raden i grupp efter vs. sista raden