MYSQL CASE 语句(if/else)

标签 mysql

我正在尝试运行如下所示的 CASE 语句:

UPDATE table SET
COL1 = CASE WHEN COL1 = '0' then 'something' else COL1 end,
COL2 = CASE WHEN COL2 = '0' then 'something' else COL2 end,
COL3 = CASE WHEN COL3 = '0' then 'something' else COL3 end
WHERE ID = '$id_example'

但我只想执行第一个“TRUE”的 CASE。

编辑:

UPDATE utskick SET
DELIMITER //
CREATE FUNCTION f()
BEGIN
    CASE 
       WHEN datum_1 = '0000-00-00' THEN datum_1 = '2020-01-01' ELSE datum_1//
       WHEN datum_2 = '0000-00-00' THEN datum_2 = '2020-01-01' ELSE datum_2//
       WHEN datum_3 = '0000-00-00' THEN datum_3 = '2020-01-01' ELSE datum_3//
    END CASE //
END //
DELIMITER;
CALL f()
WHERE kund_id = '14'

编辑2:

UPDATE table SET
CASE 
    date_1 WHEN date_1 = '0000-00-00' THEN '2020-01-01'
    ELSE
        CASE date_2 WHEN date_2 = '0000-00-00' THEN '2020-01-01'
        ELSE
           CASE date_3 WHEN date_3 = '0000-00-00' THEN '2020-01-01'
        END
    END
END
WHERE id = 23

我收到此错误:

1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 2 行的 'CASE datum_1 WHEN datum_1 = '0000-00-00' THEN '2020-01-01' ELSE' 附近使用的正确语法

最佳答案

尝试

WHEN (COL3 = '0' AND NOT (COL1 = '0' OR COL2 = '0')) ...
WHEN (COL2 = '0' AND NOT (COL1 = '0')) ...
WHEN COL1 = '0' ...

所以只有想要的时候才是正确的

关于MYSQL CASE 语句(if/else),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342342/

相关文章:

mysql - 我的计数查询中 'AS' 存在语法错误

mysql - 在实体管理器上查询时需要避免使用 “in PersistenceUnit”

mysql - 写入数据库时​​在不同时间插入记录的不同部分

c# - 使用逗号分隔数值的表中的 POST 和 PUT 问题

php - 连接两个以上的 mysql 表,然后将行操作为分组的多维数组

mysql - 如何设置mysql存储过程以使用变量进行更新

mysql - Sql 查询获取与标志关联的产品

mysql - 在两个 td 标签中显示日期时间

java - 如何使用Mysql和Java(Hibernate)获取startTime和endTime

mysql - 分组后消除某些重复的行