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

如何在UPDATE语句中结合CASE与SELECT处理未匹配场景?

解决方案

先修正原SQL中的笔误(s.CreateByID应为r.CreateByID),再通过CASE子句处理名称匹配失败的场景,同时完全覆盖原错误的CreateByID值:

UPDATE db.request r
SET r.CreateByID = CASE
    -- 匹配到db.user中对应名称时,取用户ID
    WHEN EXISTS (SELECT 1 FROM db.user u WHERE r.NameCreateBy = u.Name)
    THEN (SELECT u.ID FROM db.user u WHERE r.NameCreateBy = u.Name)
    -- 匹配不到时的自定义处理,示例设为NULL,可根据需求改为默认编码(如-1)
    ELSE NULL
END
WHERE r.ID IN (23506);

要点说明

  • 原SQL中set s.CreateByID属于别名错误,需改为目标表的别名r
  • CASE逻辑优先判断是否存在匹配用户,避免子查询重复执行带来的性能损耗
  • 无论CreateByID原有值是否错误,都会被新计算的值覆盖,彻底忽略原错误数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:45:24