我的查询的简化版本
SELECT * FROM logs WHERE pw='correct' AND CASE WHEN id<800 THEN success=1 ELSE END AND YEAR(timestamp)=2011
这是行不通的。我想做的是success=1仅添加带有的行id<800,否则忽略此检查。
success=1
id<800
我该怎么写呢?谢谢!
编辑:澄清一下,这是什么样子表
|id | pw | success | -------------------------- |700 | correct | 1 | |710 | correct | 1 | |900 | correct | NULL | |999 | correct | 0 |
我正在尝试返回所有行,但pw不能忽略该列。
pw
您不必使用CASE … WHEN,则可以使用OR条件,如下所示:
WHERE pw='correct' AND (id>=800 OR success=1) AND YEAR(timestamp)=2011
这意味着,如果id <800,则条件必须为1才能成功。否则,这将是真实的。
这种情况不太常见,但是您仍然可以使用CASE WHEN,如下所示:
WHERE pw='correct' AND CASE WHEN id<800 THEN success=1 ELSE TRUE END AND YEAR(timestamp)=2011
这意味着:success=1如果id <800,则返回(可以为TRUE或FALSE),否则始终返回TRUE。