我正在尝试编写查询以找出记录在给定的时间内是否存在多个。即使存在,同一记录也要重复多少次。
现在要解决此问题,我已经对记录进行了排序。
select * from table_name where date = ? and date > ? order by email
试图计算同一条记录的存在次数。但是我无法找出一种方法来计算同一条记录的存在次数。
上表保存了Xyz
名和xyz@email.com
数据三遍。并且名称Abc
和电子邮件abc@email.com
两次,第三条记录名称Def
和电子邮件def@email.com
两次。现在,我正在尝试找出一种方法,以使用单个查询找出在给定的时间内每个记录被重复的次数。我正在考虑对记录使用递归,并进行计数,直到对它进行排序后没有找到不同的记录。但是在每个记录上使用递归似乎很昂贵。
是否有更好的解决方案来解决此问题?
致谢
答案 0 :(得分:2)
分组并计数。
SELECT column_to_compare1, column_to_compare2, COUNT(*)
FROM table_name
WHERE [date] BETWEEN @date1 AND @date2
GROUP BY column_to_compare1, column_to_compare2
HAVING COUNT(*) > 1 -- IF YOU WANT TO ONLY INCLUDE RECORDS WITH DUPLICATES
介于两者之间,因此您可以使用DATEADD调整日期。
答案 1 :(得分:0)
您可以使用COUNT函数执行此操作。
要使用您自己的查询执行此操作:
SELECT Name, Email, COUNT(*) AS count
FROM table_name
WHERE date BETWEEN '01/01/2005' AND '31/12/2005'
GROUP BY Name, Email
但是您的示例查询效果不佳,因此我无法为您提供更好的解决方案。这是此工作的示例:SQL Fiddle
编辑:更新了我的解决方案以符合您的预期输出。