为什么这个查询不起作用? :( 我试图替换嵌套的 IF 语句“...SET lkey = IF(lkey >= 11, lkey - 5, IF(lkey > 5, lkey + 2,lkey))”
UPDATE pages
SET lkey = CASE lkey WHEN lkey >= 11 THEN
lkey - 5
ELSE
CASE lkey WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
END,
rkey = CASE lkey WHEN lkey >= 11 THEN
rkey - 5
ELSE
CASE rkey WHEN rkey < 11 THEN
rkey + 2
ELSE
rkey
END
END
WHERE rkey > 5 AND
lkey < 12;
最佳答案
此子句(及类似子句)中的语法错误
CASE lkey WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
都可以
CASE WHEN [condition] THEN [expression] ELSE [expression] END
或
CASE [expression] WHEN [value] THEN [expression] ELSE [expression] END
所以在你的情况下它会是:
CASE WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
查看文档(CASE 表达式):
关于sqlite - SQLite 查询中的 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968841/