You need to enable JavaScript to run this app. SQL基于条件从其他表插入值时,如何关联sysName表调整cname列后缀
优惠活动
大模型
产品
解决方案
定价
更多

SQL基于条件从其他表插入值时,如何关联sysName表调整cname列后缀

实现方案
  • 核心改造:替换原有sg.name + '-webApp'的固定拼接逻辑,通过存在性校验判断sg.name的取值是否在sysName表中存在,动态匹配对应后缀;为避免直接关联sysName产生重复行打乱原有DISTINCT的去重逻辑,优先用关联子查询做存在性判断,不会引入冗余数据,性能更优。

改造后可执行SQL

假设sysName表中存储系统名称值的字段为sys_name,完整代码如下:

CREATE TABLE #temp_t (id INT, cname NVARCHAR(100), val INT, aid INT)
INSERT INTO #temp_t 
SELECT DISTINCT
ISNULL(IDXC.id, 0) id, 
-- 动态匹配拼接后缀
CASE 
  WHEN EXISTS (SELECT 1 FROM sysName sn WHERE sn.sys_name = sg.name) 
  THEN sg.name + '-andApp' 
  ELSE sg.name + '-webApp' 
END AS cName, 
0 val, 
ag.ID aid
FROM spgroup sg
JOIN APPA APP ON sg.id > 1 AND sg.val & 4 = 0 AND APP.dagi = sg.id 
JOIN AIDBI XDI ON APP.bs = XDI.bsid
LEFT JOIN #IDXC ON IDXC.agpv = sg.id
WHERE IDXC.id IS NULL

关键注意点

  • 代码中sn.sys_name需根据sysName表的实际结构替换为真实存储系统名的列名,确保和sg.name的等值匹配逻辑准确。
  • 不建议直接在主查询流中JOIN sysName表做判断:如果sysName表存在同名称的多条重复记录,会导致主查询结果集行数膨胀,哪怕后续用DISTINCT去重,也会增加不必要的计算开销;用EXISTS做存在性判断时,匹配到第一条符合条件的记录就会终止校验,完全不会影响主查询的结果粒度。
  • 原有查询的多表关联、过滤条件、临时表结构完全保留,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 03:06:01