Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询if语句,更新错误_Mysql_Sql - Fatal编程技术网

Mysql查询if语句,更新错误

Mysql查询if语句,更新错误,mysql,sql,Mysql,Sql,早上好,我正在尝试在遍历树中上下移动节点,但问题是,如果我有向上移动节点的查询,它会在sql语法中抛出一个错误,请问,您知道问题在哪里吗 UPDATE categories SET lft = IF( lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1)), rgt = IF( lft >= 17 AND rgt <= 18, rgt + 1, IF(lft &

早上好,我正在尝试在遍历树中上下移动节点,但问题是,如果我有向上移动节点的查询,它会在sql语法中抛出一个错误,请问,您知道问题在哪里吗

UPDATE categories 
SET lft = IF( lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1)), 
    rgt = IF( lft >= 17 AND rgt <= 18, rgt + 1, IF(lft >= 15 AND rgt <= 16, rgt - 1))
WHERE (rgt <= 18 AND lft >= 15)
更新类别

设置lft=IF(lft>=17和rgt=15和rgt=17和rgt=15和rgt在内部IF()函数调用中缺少第三个参数,例如

IF(lft >= 15 AND rgt <= 16, lft - 1)
                          ^        ^^^^

IF(lft>=15且rgt=15且rgt您错过了内部IF()中的第三个参数

试试这个

   UPDATE categories 
    SET lft = IF( lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1,0)), 
        rgt = IF( lft >= 17 AND rgt <= 18, rgt + 1, IF(lft >= 15 AND rgt <= 16, rgt - 1,0))
    WHERE (rgt <= 18 AND lft >= 15)
更新类别

设置lft=IF(lft>=17和rgt=15,rgt=17和rgt=15,rgt@JanKožušník替换
else_stmt_expre
   UPDATE categories 
    SET lft = IF( lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1,0)), 
        rgt = IF( lft >= 17 AND rgt <= 18, rgt + 1, IF(lft >= 15 AND rgt <= 16, rgt - 1,0))
    WHERE (rgt <= 18 AND lft >= 15)