0
下面的这个查询选择所有具有与自注册之前的335天或更少的同一父亲注册的行的行。有没有办法编辑这个查询,以便它不会消除输出中的重复行?我需要在彼此的335天内查看该父亲的所有注册情况。MYSQL - 查找并显示日期差异内的所有重复项critria
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 ymca_reg.* FROM ymca_reg WHERE (((ymca_reg.Year) In (SELECT Year FROM ymca_reg As Tmp
GROUP BY Year, Father_Last_Name, Father_First_Name
HAVING Count(*)>1
And Father_Last_Name = ymca_reg.Father_Last_Name
And Father_First_Name = ymca_reg.Father_First_Name)))
ORDER BY ymca_reg.Year, ymca_reg.Father_Last_Name, ymca_reg.Father_First_Name
此查询会返回正确审查所有的重复,而是因为它不使用加入,只要我添加日期是非常慢它只返回后面的行。谢谢。
非常好。这对于这个孪生兄弟来说是个窍门。所有的dups都会返回,它只是在日期范围内评估dups。但是,它会返回数据库中没有重复的单行。不知道为什么它只会返回一些独特的,而不是所有的独特的。 – rpbale
我说得太快了。我不是很细心。它正在返回表中的每一行,不管有没有。我确实添加了 'ORDER BY ymca_reg.Year,ymca_reg.Father_Last_Name,ymca_reg.Father_First_Name' 将这些模糊相邻。但这不是原因。 – rpbale
@rpbale。 。 。那个'abs()'返回的值太多了。 –