【发布时间】:2015-09-07 07:25:16
【问题描述】:
下面的这个查询会选择所有的行,这些行中的同一父亲在之前注册后的注册时间不超过 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 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
此查询确实返回所有重复项以供正确查看,但它非常慢,因为它不使用连接,并且只要我添加日期条件,它只会返回后面的行。谢谢。
【问题讨论】:
标签: mysql duplicates