我有MySQL(perl)的代码:
UPDATE pages
SET rkey = rkey + 2,
lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key
我需要将此代码与SQLite一起使用,但是不支持IF()函数。我可以做什么?
最佳答案
对于通用SQL,可以使用CASE
:
来自http://www.sqlite.org/lang_expr.html部分“案例表达”
例如。
UPDATE pages
SET rkey = rkey + 2,
lkey = CASE WHEN lkey >= $key THEN lkey + 2 ELSE lkey END
WHERE rkey >= $key
关于SQLite和CASE的另一个链接(带有带有subselect的更新示例)http://sqlite.awardspace.info/syntax/sqlitepg09.htm
CASE可以在通用SQL的UPDATE中使用,但是我没有有关CASE UPDATE的SQLite支持的信息
http://www.craigsmullins.com/ssu_0899.htm部分“修改数据时使用CASE表达式”
关于sql - SQLite中的IF()语句替代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4874285/