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

SQL Server:如何用Join返回固定行,即使关联表无匹配行

实现需求的SQL语句方案

要让每个Table1的Col1值都对应Low、Medium、High三个Col2值,哪怕Table2里没有匹配行,核心思路是先生成所有Col1与三个等级的完整组合,再左关联Table2获取对应Col3的值。

具体SQL语句如下:

SELECT 
    t1.[Col 1],
    levels.[Col 2],
    t2.[Col 3]
FROM 
    Table1 t1
CROSS JOIN 
    (VALUES ('Low'), ('Medium'), ('High')) AS levels([Col 2])
LEFT JOIN 
    Table2 t2 ON t1.[Col 1] = t2.[Col 1] AND levels.[Col 2] = t2.[Col 2]
ORDER BY 
    t1.[Col 1], 
    CASE levels.[Col 2] 
        WHEN 'Low' THEN 1 
        WHEN 'Medium' THEN 2 
        WHEN 'High' THEN 3 
    END;

代码说明:

  1. 构造等级列表:用VALUES ('Low'), ('Medium'), ('High')生成包含三个固定等级的临时数据集levels
  2. 生成全量组合:通过CROSS JOIN让Table1的每一行都和三个等级各匹配一次,得到所有需要的Col1+Col2组合
  3. 左关联获取数据:用LEFT JOIN关联Table2,匹配条件同时包含Col1和Col2,没有匹配的行Col3会自动显示为NULL
  4. 排序:最后通过ORDER BY和CASE语句让结果按Col1排序,同时每个Col1下的等级按Low→Medium→High的顺序排列,和预期输出一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:30:59