MariaDB多表关联UPDATE使用CASE语句报1064语法错误如何解决
问题解决方法
错误原因
你写的SQL存在两个语法错误,触发了1064报错:
CASE语句的每个WHEN分支末尾错误使用了分号,分号是整条SQL的结束标识,放在分支内部会打断语法解析- 判断字段是否为NULL不能使用
=运算符,SQL中NULL和任何值做等值比较结果都为未知,必须使用IS NULL关键字判断
修正后的SQL语句
UPDATE user_games LEFT JOIN games ON user_games.game_key = games.game_id SET user_games.result = CASE WHEN user_games.pick = games.winner THEN 'W' WHEN games.winner IS NULL THEN NULL ELSE 'L' END;
补充说明
如果你希望games.winner为NULL时,保留user_games.result字段的原有值(而不是强制设为NULL),可以把第二个WHEN分支调整为不处理该场景,例如新增WHERE条件过滤games.winner IS NOT NULL的行,避免覆盖原有数据。
内容的提问来源于stack exchange,提问作者Geomon
相关产品推荐
相关产品推荐

