mysql - 在更新语句中添加 If

标签 mysql sql

我正在尝试在更新语句中添加一个 IF 子句。以为这很容易,但似乎并非如此。

事情是这样的。它在存储过程中。

FETCH cur1 INTO procId, procType, procVals, procLen, procUpdated, procPrivate, procRegional;

    IF done THEN
      LEAVE the_loop;
    END IF;

    UPDATE scores t1
        JOIN scores t2
        ON FIND_IN_SET(t1.id, t2.vals)
        SET t1.private = t1.private+1,
        IF procType = 3 THEN // Problem lies here
             t1.regional = t1.regional+1;
            ELSE IF procType = 4 THEN
             t1.otherCol = t1.otherCol+1;
          END IF;
    WHERE t2.id = procId;

我被那里的 IF 困住了。除了第一个 SET,我还需要使用 IF Update 另一列。

最佳答案

UPDATE scores t1
JOIN scores t2
ON FIND_IN_SET(t1.id, t2.vals)

SET t1.private = t1.private+1 
t1.regional = IF (procType = 3, t1.regional + 1, t1.regional)
t1.otherCol = IF (procType = 4, t1.otherCol + 1, t1.otherCol)
WHERE t2.id = procId

关于mysql - 在更新语句中添加 If,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110417/

相关文章:

sql - SQL 2005-2008 中的锁定行

mysql - 使用我的 View 查询 (MySQL)

php - mysql: IF 'some columns value' 是 DISTINCT THEN 翻转 bool 值

php - 将复杂查询转换为 zend_db 选择对象格式

sql - 查找字段中的字符串

SQL Server 存储过程和权限

mysql - SpringBoot-MyBatis-MySQL中如何使用SelectById(object_id)获取特定对象?

MySQL(版本 5.5): Why `JOIN` is faster than `IN` clause?

php - 如何复制数据库记录并跟踪其新 ID

mysql - 多连接查询,透视?烦恼