【发布时间】:2019-02-03 13:52:25
【问题描述】:
我正在使用 MySQL 编写一个异常捕获页面,用于在以下场景中捕获重复的计费条目。
项目详细信息输入到一个包含以下两列(以及其他列)的表中。
ItemCode VARCHAR(50), BillEntryDate DATE
经常会在几天内多次输入同一项目的帐单。喜欢,
"Football","2019-01-02"
"Basketball","2019-01-02"
...
...
"Football","2019-01-05"
"Rugby","2019-01-05"
...
"Handball","2019-01-05"
"Rugby","2019-01-07"
"Rugby","2019-01-10"
在上面的示例中,足球项目计费两次 - 第一次是 1 月 2 日,另一次是 1 月 5 日。同样,项目 Rugby 在 1 月 5 日、7 日、10 日计费三次。
我希望编写简单的 SQL,它可以提取每个项目 [例如,使用 distinct(ItemCode) 子句],然后显示 30 天内重复的所有记录。 在上述情况下,预期的输出应该是以下 5 条记录:
"Football","2019-01-02"
"Football","2019-01-05"
"Rugby","2019-01-05"
"Rugby","2019-01-07"
"Rugby","2019-01-10"
我正在尝试运行以下 SQL:
select * from tablen a, tablen b, where a.ItemCode=b.ItemCode and a.BillEntryDate = b.BillEntryDate+30;
但是,这似乎非常低效,因为它运行了很长时间而不显示任何记录。 是否有可能获得一种不太复杂且速度更快的方法?
我确实探索了现有的主题(如How do I find duplicates across multiple columns?),但它正在捕获两个列具有相同值的重复项。我的要求是一列相同的值,第二列在一个月的日期范围内变化。
【问题讨论】: