Php 使用CASE-WHEN-THEN语句更新MySQL表中的多行-不起作用
这让我快发疯了,所以任何帮助都将不胜感激 我试图用用户给定的数字来增加表中特定行的点数总数。我有一些PHP根据表单输入动态生成此语句:Php 使用CASE-WHEN-THEN语句更新MySQL表中的多行-不起作用,php,mysql,sql-update,case,case-when,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
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”放在同一列中,以防止出现这种问题。您的语法是错误的
您需要在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”放在同一列中,以防止出现此类问题。快速浏览一下,我会说END语句需要放在WHERE语句之前。我会在该CASE表达式中包含一个
ELSE points
。查询时不需要这样做,但只是为了防止在列表中添加另一个值。。。我希望保持points
列的值不变,而不是将其设置为NULL。快速看一眼,我会说END语句需要放在WHERE语句之前。在这种情况下,我将包含一个ELSE points
表达式。查询时不需要这样做,但只是为了防止在列表中添加另一个值。。。我想保持points
列的值不变,而不是将其设置为NULL。非常感谢,几分钟内就解决了几个小时的辛苦工作。我真希望我能早点问:)太谢谢你了,几小时的辛劳几分钟就解决了。我要是早点问就好了:)