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

如何在内连接中返回NULL值?需显示无最大笔记号的Unique ID

解决方法:保留无笔记的Unique ID并获取最大笔记号

你的核心问题出在查询里的INNER JOIN——虽然你一开始用了LEFT JOIN关联QUEUE_NOTES,但后面的INNER JOIN子查询会过滤掉那些没有对应笔记的Unique ID(因为这些行在子查询里没有匹配项,INNER JOIN会直接排除它们)。

要实现同时显示有最大笔记号和无笔记的Unique ID,可以用两种常见方式:

方式1:先计算每个Unique ID的最大笔记号,再左关联

这种方式适合只需要Unique ID和最大笔记号的场景:

SELECT 
    q.[Unique ID],
    max_notes.[Max Note Number]
FROM 
    Q_NOT_PROC q
LEFT JOIN (
    -- 子查询:算出每个Order Item对应的最大笔记号
    SELECT 
        [Order Item UniqueID],
        MAX([Note Number]) AS [Max Note Number]
    FROM 
        QUEUE_NOTES
    GROUP BY 
        [Order Item UniqueID]
) max_notes ON max_notes.[Order Item UniqueID] = q.[Unique ID]

这样所有Q_NOT_PROC里的Unique ID都会被保留,没有对应笔记的行,[Max Note Number]会显示为NULL。

方式2:保留最大笔记号对应的完整笔记记录

如果需要同时展示最大笔记号对应的那条笔记的所有字段(就像你原查询里的qn.*),可以用窗口函数来标记每组的最大笔记行:

SELECT 
    q.[Unique ID],
    qn.[Note Number],
    qn.*,
    q.*
FROM 
    Q_NOT_PROC q
LEFT JOIN (
    -- 用ROW_NUMBER标记每个UniqueID的最大笔记行
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY [Order Item UniqueID] 
            ORDER BY [Note Number] DESC
        ) AS rn
    FROM 
        QUEUE_NOTES
) qn ON qn.[Order Item UniqueID] = q.[Unique ID] AND qn.rn = 1

这里的ROW_NUMBER()会按[Order Item UniqueID]分组,每组里按[Note Number]倒序排列,标记第一行(也就是最大笔记号的那条记录)。通过LEFT JOIN并筛选rn=1,既保留了所有Unique ID,又能拿到对应最大笔记的完整信息,无笔记的行对应的qn.*会全部显示为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:03:10