You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres中无法将CASE WHEN查询结果插入rvu_arbeid表,求解决方案

问题分析与解决建议

你的SQL操作失败主要有两个核心问题:

1. 列数不匹配

INSERT INTO 指定了只插入 rvu_arbeid 表的 arb_utd 一个列,但后面的 SELECT 语句返回了3个列(hvor_oy_arb_utd、hvor_bg_arb_utd、CASE计算结果),PostgreSQL会因列数不匹配直接报错。

2. 操作逻辑可能不符合预期

从语句来看,你大概率是想把CASE计算出的值更新到现有行的arb_utd列,而非新增行。如果是新增行,当前写法会把原表每行的计算结果都插入成新行,可能产生大量冗余数据。


修正方案

场景1:更新现有行的arb_utd列(推荐,符合常规需求)

使用UPDATE语句替换INSERT,直接修改原表数据:

UPDATE rvu_arbeid
SET arb_utd = CASE 
        WHEN hvor_oy_arb_utd <> '- Velg alternativ -' THEN hvor_oy_arb_utd
        WHEN hvor_bg_arb_utd <> '- Velg alternativ -' THEN hvor_bg_arb_utd
        ELSE 'NA'
    END;

场景2:确实需要插入新行

如果是要新增行,确保SELECT只返回目标列对应的数据(仅CASE计算结果):

INSERT INTO rvu_arbeid (arb_utd)
SELECT CASE 
        WHEN hvor_oy_arb_utd <> '- Velg alternativ -' THEN hvor_oy_arb_utd
        WHEN hvor_bg_arb_utd <> '- Velg alternativ -' THEN hvor_bg_arb_utd
        ELSE 'NA'
    END
FROM rvu_arbeid;

额外检查

  • 确认arb_utd列的数据类型与CASE返回的字符串类型兼容(比如VARCHAR/TEXT),若类型不匹配需用CAST转换,例如CAST(CASE ... END AS VARCHAR(50))。
  • 若执行更新时涉及大量数据,建议先在测试环境验证逻辑,避免误改数据。

内容的提问来源于stack exchange,提问作者Lilly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:42:23