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

Oracle中关联子查询使用外部表列的标准SQL实现方案

解决方案

可以用以下两种标准SQL方式实现需求,无需使用对象或记录类型:

方法一:窗口函数ROW_NUMBER()

这是最直观的实现方式,通过窗口函数为每个匹配ID_ELEMENTO_008 = ID_007且AuditData <= 008表AuditData的007表记录排序,筛选出最新的一条:

SELECT loc.*, aud.*
FROM NAT_DASH_AUD_ELEMENTO_WORKFLOW_LOC_008 loc
LEFT JOIN (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY ID_007 
            ORDER BY AuditData DESC
        ) rn
    FROM NAT_DASH_AUD_ELEMENTO_WORKFLOW_007
) aud 
    ON aud.ID_007 = loc.ID_ELEMENTO_008
    AND aud.AuditData <= loc.AuditData
    AND aud.rn = 1;

说明:如果仅需保留有匹配007表记录的行,将LEFT JOIN替换为INNER JOIN即可。

方法二:关联子查询匹配最新AuditData

先找出每个ID_007对应小于等于当前008表行AuditData的最大时间戳,再关联007表获取完整记录:

SELECT loc.*, aud.*
FROM NAT_DASH_AUD_ELEMENTO_WORKFLOW_LOC_008 loc
LEFT JOIN NAT_DASH_AUD_ELEMENTO_WORKFLOW_007 aud
    ON aud.ID_007 = loc.ID_ELEMENTO_008
    AND aud.AuditData = (
        SELECT MAX(AuditData)
        FROM NAT_DASH_AUD_ELEMENTO_WORKFLOW_007
        WHERE ID_007 = loc.ID_ELEMENTO_008
          AND AuditData <= loc.AuditData
    );

说明:若同一ID_007在同一最大时间戳下有多条记录,此方法会返回多条匹配行;需唯一结果时,方法一的窗口函数方案更稳妥。


内容的提问来源于stack exchange,提问作者gt.guybrush

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:57:44