我有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/

10-10 00:32