как искать между датами при использовании внутреннего соединения для удаления - PullRequest
0 голосов
/ 07 сентября 2018

Здравствуйте, я пытаюсь найти дубликаты в таблице в течение периода, используя этот фрагмент.

FROM
    table WHERE Start_Date BETWEEN '2018-07-01' AND '2018-07-31'
GROUP BY Policy_Number
HAVING COUNT(Policy_Number) > 1;

при этом создаются все дубликаты записей в таблице в требуемые даты с их количеством.

Теперь я пытаюсь удалить эти дубликаты записей, используя этот фрагмент, используя этот фрагмент, который я также нашел в Интернете

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND Start_Date BETWEEN '2018-07-01' AND '2018-07-31';

но я продолжаю получать эту ошибку

Столбец «Start_Date», где предложение неоднозначно

Пожалуйста, как я могу исправить это, чтобы удалить дубликаты, которые я хочу удалить, спасибо !!

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

напишите так t1.Start_Date его работа

Попробуйте выполнить как запрос, предшествующий выполнению выбора:

SET SQL_BIG_SELECTS=1;

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND t1.Start_Date BETWEEN '2018-07-01' AND '2018-07-31';

Поскольку вы создаете t1 and t2 с использованием одной и той же таблицы table, поэтому оба имеют start_date, и поэтому его выдает Column 'Start_Date' in where clause is ambiguous error

0 голосов
/ 07 сентября 2018

пример работает SELECT table.Number FROM table INNER JOIN table2 ON table.ID = table2.ID WHERE checkInDate BETWEEN '2015-09-12' AND '2015-09-13';

0 голосов
/ 07 сентября 2018

Определить псевдоним перед start_Date

SET OPTION SQL_BIG_SELECTS = 1

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE 
    t1.id < t2.id AND t1.Policy_Number = t2.Policy_Number AND t1.Start_Date BETWEEN '2018-07-01' AND '2018-07-31'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...