在INSERT INTO语句中使用CASE语句报错:Unexpected CASE 求助
解决「Unexpected CASE」报错问题
你报错的核心原因是用错了SQL语句类型:你想用CASE逻辑填充已有行的空accountstatus列,但写的是INSERT语句——INSERT是用来新增数据行的,不是修改已有行的字段值,数据库无法识别CASE的位置,因此抛出「Unexpected CASE」错误。
正确的做法是用UPDATE语句修改已有记录,代码如下:
UPDATE customeraccounts SET accountstatus = CASE WHEN debt = 0 THEN 'closed' WHEN debt > 0 THEN 'open' WHEN debt < 0 THEN 'refund needed' END;
如果只想更新那些accountstatus原本为空的行,可以添加WHERE条件过滤,避免重复修改已有值:
UPDATE customeraccounts SET accountstatus = CASE WHEN debt = 0 THEN 'closed' WHEN debt > 0 THEN 'open' WHEN debt < 0 THEN 'refund needed' END WHERE accountstatus IS NULL;
内容的提问来源于stack exchange,提问作者Shab Meh
相关产品推荐
相关产品推荐

