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

如何按rowCount排序查询temp表,直至出现key1、key2、key3组合重复?

解决方案

可以实现该需求,核心思路是先定位第一个出现(key1,key2,key3)组合重复的记录位置,再筛选该位置之前的所有记录。

表结构与数据

key1key2key3key4rowCount
k1.1k2.1k3.1k4.11
k1.2k2.2k3.2k4.22
k1.3k2.3k3.3k4.33
k1.1k2.1k3.1k4.44
k1.5k2.5k3.5k4.55
k1.6k2.6k3.6k4.66

实现SQL

SELECT t.*
FROM temp t
WHERE t.rowCount < (
    SELECT MIN(rowCount)
    FROM (
        SELECT key1, key2, key3, rowCount,
               ROW_NUMBER() OVER (PARTITION BY key1, key2, key3 ORDER BY rowCount) AS rn
        FROM temp
    ) sub
    WHERE rn = 2
);

逻辑说明

  1. 内层子查询通过ROW_NUMBER()窗口函数,为每个(key1,key2,key3)组合的记录按rowCount升序编号:首次出现的记录标记为rn=1,重复出现的标记为rn=2。
  2. 中间子查询找出所有rn=2的记录中最小的rowCount,也就是第一个出现组合重复的位置(示例中为4)。
  3. 外层查询筛选所有rowCount小于该值的记录,即可得到截止到首次重复前的所有数据。

期望结果

key1key2key3key4rowCount
k1.1k2.1k3.1k4.11
k1.2k2.2k3.2k4.22
k1.3k2.3k3.3k4.33

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:44:56