using CASE in the WHERE clause

前端 未结 4 1972
甜味超标
甜味超标 2021-01-31 08:38

simplified version of my query

SELECT *
FROM logs 
WHERE pw=\'correct\' AND CASE WHEN id<800 THEN success=1 ELSE END 
AND YEAR(timestamp)=2011 
4条回答
  •  天命终不由人
    2021-01-31 09:08

    You don't have to use CASE...WHEN, you could use an OR condition, like this:

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

    this means that if id<800, success has to be 1 for the condition to be evaluated as true. Otherwise, it will be true anyway.

    It is less common, however you could still use CASE WHEN, like this:

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

    this means: return success=1 (which can be TRUE or FALSE) in case id<800, or always return TRUE otherwise.

提交回复
热议问题