【问题标题】:Find duplicates within a given date range查找给定日期范围内的重复项
【发布时间】:2021-11-09 21:00:18
【问题描述】:

我正在尝试查找一个查询,它将返回数据库集中具有重复符号(标识符)并且在给定日期范围内的所有条目。

我尝试过这样的事情:

select * from dmt_teamresource where dmt_teamresource.signum IN (
select dmt_teamresource.signum from dmt_teamresource group by dmt_teamresource.signum having count((dmt_teamresource.signum)) > 1) 

从 dmt_teamresource 返回所有重复的条目。现在我需要以某种方式添加日期范围。正在考虑类似的事情:

where dmt_teamresource.startdate is between '2021-01-31' and '2021-12-31'

但不知道如何组合查询。

【问题讨论】:

    标签: sql duplicates date-range


    【解决方案1】:

    使用窗口函数:

    select tr.*
    from (select ts.*, count(*) over (partition by tr.signum) as cnt
          from dmt_teamresource tr
          where . . .   -- whatever conditions you want here
         ) tr
    where cnt >= 2;
    

    【讨论】:

    • 当我尝试使用它时,我从 HeidiSQL 收到一个错误,我在其中进行查询,说语法错误,使用 tr.signum 作为 cnt 的近分区
    • 这是标准 SQL,并且窗口函数在当今几乎所有数据库中都很常见。也许你的未命名数据库是旧版本的东西。
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2017-12-02
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多