mysql - 使用 CASE MySQL 时出错

标签 mysql

我发现了一些代码并将其修改为新的列名。我检查了几次拼写问题,但无济于事。

UPDATE `company_playtime` 
SET front_player_count = CASE 
    WHEN (front_paid + 1) > front_player_count THEN (front_paid + 1) 
    ELSE front_player_count 
END;

这段代码报错:

错误编号:1054 “字段列表”中的未知列“front_player_count”

如果有帮助的话,我正在使用 codeigniter 和 php。

谢谢。

最佳答案

为什么不尝试使用 GREATEST 呢?即

UPDATE `company_playtime`
SET front_player_count = GREATEST( front_player_count , front_paid + 1 )

或者更好的是,不更新未受影响的行

UPDATE `company_playtime`
SET front_player_count = front_paid + 1
-- use of <= negates requirement for +1 here, should be more efficient
WHERE front_player_count <= front_paid 

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_greatest

这假设提到的列确实存在于 company_playtime

关于mysql - 使用 CASE MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17034033/

相关文章:

MySQL数据库错误: Subquery returns more than 1 row

php - 如何连接两个表中的两个mysql查询

php - 多个表中的查询中的多个 sun 函数

mysql - 模拟 "create user if not exists"语法错误

php - 多个复选框值未插入 MySQL 列中

运行 mysql 命令大文件时 MySQL 消失错误

mysql - 如何获取 MySQL 中逗号分隔字段的最大值?

mysql - centos 7 查找mysql root密码

mysql - 当表1中找到数据时更新表2

php - 如何使用表扫描优化查询?