Ver*_*Lom 46 sqlite nested case
为什么这个查询不起作用?:(我试图替换嵌套的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;
Run Code Online (Sandbox Code Playgroud)
Luk*_*der 81
该子句中的语法错误(和类似的)
CASE lkey WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
Run Code Online (Sandbox Code Playgroud)
它也是
CASE WHEN [condition] THEN [expression] ELSE [expression] END
Run Code Online (Sandbox Code Playgroud)
要么
CASE [expression] WHEN [value] THEN [expression] ELSE [expression] END
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下,它会读取:
CASE WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
Run Code Online (Sandbox Code Playgroud)
查看文档(CASE表达式):
http://www.sqlite.org/lang_expr.html
Hru*_*lov 30
此外,您不必使用嵌套CASE.你可以使用几个WHEN-THEN行,ELSE行也是可选的,尽管我推荐它
CASE
WHEN [condition.1] THEN [expression.1]
WHEN [condition.2] THEN [expression.2]
...
WHEN [condition.n] THEN [expression.n]
ELSE [expression]
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96646 次 |
| 最近记录: |