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

如何在SQL Developer中匹配行号与表并筛选唯一组合行

解决基于自定义组合筛选唯一行的问题

首先你的原有SQL存在两个问题:

  • 嵌套的(select * from my_table)子查询完全多余,属于无效写法
  • 直接生成的rownum是查询结果的临时行号,无法关联回原表获取对应行的完整数据

要实现按code||'_'||indicator||'_'||length组合去重,保留每个组合的一行完整数据,推荐用窗口函数ROW_NUMBER()来实现,具体步骤如下:

实现思路

  1. 用ROW_NUMBER()按目标组合分组,给每个分组内的行分配序号
  2. 筛选出每个分组里序号为1的行,就是该组合的唯一行

完整SQL代码

SELECT *
FROM (
    SELECT 
        t.*,
        ROW_NUMBER() OVER (PARTITION BY code||'_'||indicator||'_'||length ORDER BY 1) AS rn
    FROM my_table t
)
WHERE rn = 1;

说明

  • PARTITION BY code||'_'||indicator||'_'||length:按你定义的组合字段分组
  • ORDER BY 1:这里的1表示按原表默认顺序取第一行,你可以替换成具体字段(比如id、create_time)来指定保留分组内的哪一行
  • 外层筛选rn=1,就能得到每个组合的唯一行,同时保留原表的所有列

内容的提问来源于stack exchange,提问作者mandu J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:57:03