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

如何让T-SQL查询为每个SkillId额外返回CandidateId为Null的行?

解决方案:为每个SkillId添加CandidateId为Null的额外记录

当然可行!你可以通过UNION ALL将原查询的结果,与每个SkillId对应的空CandidateId记录合并,就能实现需求。修改后的T-SQL语句如下:

-- 原查询结果:保留所有已有关联的记录
SELECT 
    NEWID() as Id, 
    ss.Id as SkillId, 
    ss.Name, 
    sc.Vote, 
    sc.CandidateId, 
    sc.Id As ScoreId 
FROM dbo.SoftSkills ss 
LEFT JOIN dbo.Scorecards sc ON ss.Id = sc.SkillId

UNION ALL

-- 新增部分:为每个SkillId生成一行CandidateId为Null的记录
SELECT 
    NEWID() as Id, 
    ss.Id as SkillId, 
    ss.Name, 
    NULL as Vote,  -- 对应原查询中sc.Vote的空值
    NULL as CandidateId,  -- 目标空值字段
    NULL as ScoreId  -- 对应原查询中sc.Id的空值
FROM dbo.SoftSkills ss

补充说明:

  • 用UNION ALL而非UNION是因为我们就是要额外新增一行记录,不需要去重,这样执行效率也更高
  • 第二部分查询仅从SoftSkills表取基础数据,把来自Scorecards表的字段统一设为NULL,保证和原查询的字段结构完全匹配
  • 如果希望同一个SkillId的所有记录排在一起,可以在整个语句末尾加上ORDER BY SkillId

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:55:07