MYSQL WHEN CASE THEN 什么都不做

标签 mysql

我想做的是在一个非常简单的 3 列数据库中设置一些字段,我用它来管理一些复选框。

如果 id 在列表中,我想将 col_2 设置为 1,保持 col_3 状态不变。但如果 id 不在列表中,则将 col_2 和 col_3 设置为 0。

这是我目前所拥有的,它不起作用,因为它给了我一些警告并更改了 col_3 的值:

UPDATE t 
SET col_2 =
 CASE         
    WHEN id IN (list) THEN 1
    WHEN id NOT IN (list) THEN  0
 END,
col_3 = 
 CASE
    WHEN id NOT IN (list) THEN 0
 END
WHERE id IS NOT NULL;

感谢任何帮助:)

最佳答案

这是保持 col_3 不变的方法

UPDATE t 
SET col_2 =
 CASE         
    WHEN id IN (list) THEN 1
    WHEN id NOT IN (list) THEN  0
 END,
col_3 = 
 CASE
    WHEN id NOT IN (list) THEN 0
    ELSE col_3 --this
 END
WHERE id IS NOT NULL;

关于您的警告,我们没有足够的信息

关于MYSQL WHEN CASE THEN 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136152/

相关文章:

php - mysql_fetch_array 不在函数内工作

php - 跳过 MySQL INSERT 的正确方法是什么

MySQL - 哈希分区不起作用

c# - 如何转换 Entity Framework 6 为我的模型生成 FluentAPI 定义,而不是数据注释? (我在 VS2015 中使用 MySQL)

MySQL:将日期列转换为年份列

php - 最佳实践,使用 PHP 尽快导入数据源并下载每一行的图像

php - 添加注册日期并收到 'Call to a member function bind_param() on boolean' 错误

php - 为什么 mysql_real_escape_string() 不应该避免任何 SQL 注入(inject)?

mysql - 错误!服务器退出而不更新 PID 文件 XAMPP

c# - Mysql 查询在 C# 中不起作用,但在 MySql Work Bench 中起作用