php - 使用 CASE WHEN THEN 语句更新 MySQL 表中的多行 - 不起作用

标签 php mysql sql-update case case-when

这让我抓狂,因此我们将不胜感激。

我正在尝试按用户给出的数字增加表格特定行中​​的总点数。我有一些 PHP 可以根据表单输入动态生成此语句:

UPDATE users SET points = CASE userID 
    WHEN 11 THEN (points + 1) 
    WHEN 16 THEN (points + 6) 
    WHEN 7 THEN (points + 7) 
    WHEN 10 THEN (points + 10) 
WHERE userID IN (11,16,7,10) 
END

由于多个访问器的问题,我不想将值存储在 PHP 变量中。

最佳答案

你的语法错误。

您需要在 WHERE 之前添加“END”:

UPDATE users
    SET points =
        (CASE userID 
             WHEN 11 THEN (points + 1) 
             WHEN 16 THEN (points + 6) 
             WHEN 7 THEN (points + 7) 
             WHEN 10 THEN (points + 10) 
         end)
WHERE userID IN (11,16,7,10)

我重新格式化了查询。我特意将“CASE”的“END”放在同一列中,以防止出现此类问题。

关于php - 使用 CASE WHEN THEN 语句更新 MySQL 表中的多行 - 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205518/

相关文章:

mysql - 选择连接查询

javascript - 插入父帖子vue js的子评论

php - PDO 异常在 laravel 中找不到驱动程序

MySQL 到 IBM Data Connect

php - 表单处理时如何确定post方法中的空间?

sql - 根据值是否存在于另一个表中进行更新

postgresql - 创建 Postgres/PostGIS 函数以根据空间查询更新表值

sql - 如何用随机值更新多行

php - 在 PHP 中从图像生成调色板

php - Laravel Route 无法工作错误是尝试获取非对象的属性