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

Oracle中查找date与date2相等的重复行并获取完整行数据

正确查询date等于date2的完整行数据

你的原查询使用GROUP BY和聚合函数的方式,会将相同date和date2组合的行合并,因此无法返回每一行的id。根据你的需求,分两种情况给出解决方案:

情况1:仅需所有date等于date2的行

直接通过WHERE子句筛选条件,即可获取包含id的完整行数据:

SELECT id, date, date2
FROM tab
WHERE date = date2;

情况2:需date等于date2且该组合出现多次的行

如果你的实际需求是找出这类重复组合的所有行,可以用以下两种方式:

方式一:子查询关联

先筛选出符合条件且重复的date/date2组合,再关联原表获取完整行:

SELECT t.id, t.date, t.date2
FROM tab t
JOIN (
    SELECT date, date2
    FROM tab
    WHERE date = date2
    GROUP BY date, date2
    HAVING COUNT(*) > 1
) t2 ON t.date = t2.date AND t.date2 = t2.date2;

方式二:窗口函数(推荐)

使用窗口函数COUNT() OVER()统计每组的行数,再筛选出数量大于1的行:

SELECT id, date, date2
FROM (
    SELECT 
        id, 
        date, 
        date2,
        COUNT(*) OVER(PARTITION BY date, date2) AS cnt
    FROM tab
    WHERE date = date2
)
WHERE cnt > 1;

内容的提问来源于stack exchange,提问作者Саша Асеев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:40:22