sqlite - SQLite 查询中的 CASE 语句

标签 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;

最佳答案

此子句(及类似子句)中的语法错误

    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 表达式):

http://www.sqlite.org/lang_expr.html

关于sqlite - SQLite 查询中的 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968841/

相关文章:

Python删除列表字典中的重复项

loops - 循环遍历子元素的子元素

postgresql - 使用 CASE WHEN 选择两列

database - 寻求 SQLite 的嵌入式数据库替代品。必须有外键约束和事务支持?

android - SQLITE CREATE VIEW JOIN 的语法问题

android - 将数据从本地 android sqlite 数据库转移到云端。

mysql - 在带有 LIKE 的 CASE 语句中使用 GROUP_CONCAT 列别名

iphone - sqlite 索引性能建议

javascript - 嵌套 getJSON 调用

mysql - 生成的sql案例