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

SQL如何关联两表实现已匹配行不再参与后续匹配且按日期升序配对

实现方案

你需要的匹配逻辑可以通过分组加排序行号关联实现,核心逻辑是同order_code分组内,两张表各自按日期升序生成组内序号,再按order_code和序号关联,即可保证每行仅匹配一次,完全符合你的要求。

以下是支持窗口函数的主流数据库(MySQL 8.0+、PostgreSQL、Oracle等)的实现代码:

WITH t1_with_rn AS (
    SELECT 
        PK1,
        order_code,
        Date1,
        -- 同order_code分组按Date1升序生成行号
        ROW_NUMBER() OVER (PARTITION BY order_code ORDER BY Date1 ASC) AS group_rn
    FROM 表1
),
t2_with_rn AS (
    SELECT 
        PK2,
        order_code,
        Date2,
        -- 同order_code分组按Date2升序生成行号
        ROW_NUMBER() OVER (PARTITION BY order_code ORDER BY Date2 ASC) AS group_rn
    FROM 表2
)
SELECT 
    t1.PK1, t1.order_code, t1.Date1,
    t2.PK2, t2.order_code, t2.Date2
FROM t1_with_rn t1
INNER JOIN t2_with_rn t2 
ON t1.order_code = t2.order_code AND t1.group_rn = t2.group_rn
ORDER BY t1.PK1 ASC;

上述代码执行后的输出和你给出的预期结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:05