MYSQL-在日期差异标准中查找并显示所有重复项

MYSQL-在日期差异标准中查找并显示所有重复项,mysql,duplicates,Mysql,Duplicates,下面的查询将选择所有行,这些行的父行自上次注册后注册335天或更短时间。是否有办法编辑此查询,使其不会消除输出中的重复行?我需要在335天内查看该父亲的所有注册实例 SELECT * FROM ymca_reg a later WHERE NOT EXISTS ( SELECT 1 FROM ymca_reg a earlier WHERE earlier.Father_First_Name = later.Father_First_Name

下面的查询将选择所有行,这些行的父行自上次注册后注册335天或更短时间。是否有办法编辑此查询,使其不会消除输出中的重复行?我需要在335天内查看该父亲的所有注册实例

SELECT * FROM ymca_reg a later
WHERE NOT EXISTS (
    SELECT 1 FROM ymca_reg a earlier 
    WHERE 
        earlier.Father_First_Name = later.Father_First_Name
        AND earlier.Father_Last_Name = later.Father_Last_Name
        AND (later.Date - earlier.Date < 335) AND (later.Date > earlier.Date)

此查询确实返回了所有重复项以供正确查看,但速度非常慢,因为它不使用联接,并且在添加日期条件后,它只返回后面的行。谢谢。

我想你想要这样的东西:

SELECT *
FROM ymca_reg later
WHERE EXISTS (SELECT 1
              FROM ymca_reg earlier 
              WHERE earlier.Father_First_Name = later.Father_First_Name AND
                    earlier.Father_Last_Name = later.Father_Last_Name AND
                    abs(later.Date - earlier.Date) < 335 and
                    later.Date <> earlier.Date
             );

这将返回所有具有此类副本的记录。请注意,后面和前面的描述已不再合适,但我留下了名称,以便您可以看到与查询的相似性。

非常好。这对DUP来说是个好办法。将返回所有DUP,并且它仅评估日期范围内的DUP。但是,它确实返回一些数据库中没有dup的单行。不知道为什么它只返回一些独特的,而不是所有独特的。我说得太快了。我不是很善于观察。它返回表中的每一行,不管是否重复。我确实添加了ymca_reg.Year、ymca_reg.Father_Last_Name、ymca_reg.Father_First_Name的顺序,以使两个复制品彼此相邻。但这不是原因,是原因。戈登,谢谢你的帮助。
SELECT *
FROM ymca_reg later
WHERE EXISTS (SELECT 1
              FROM ymca_reg earlier 
              WHERE earlier.Father_First_Name = later.Father_First_Name AND
                    earlier.Father_Last_Name = later.Father_Last_Name AND
                    abs(later.Date - earlier.Date) < 335 and
                    later.Date <> earlier.Date
             );