Я пишу страницу перехвата исключений, используя 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"
В вышеприведенном примере пункт «Футбол» оплачивается дважды - сначала 2 января, а затем 5 января.Точно так же, пункт Rugby выставляется трижды на 5,7,10 января.
Я ищу написать простой SQL, который может забрать каждый элемент [скажем, с помощью отдельного предложения (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;
Однако, это, кажется, очень неэффективнотак как он работает долго без отображения каких-либо записей.Есть ли возможность получить менее сложный и быстрый метод?
Я изучал существующие темы (например, Как найти дубликаты в нескольких столбцах? ), но он ловит дубликаты там, где ОБАстолбцы имеют одинаковое значение.Мое требование - один столбец с одинаковым значением, а второй столбец изменяется в диапазоне дат за месяц.