Попытка удалить повторяющиеся записи из таблицы доступа - PullRequest
0 голосов
/ 29 ноября 2018

Я ищу, чтобы удалить дубликаты записей из таблицы в моей БД.Я использую приведенный ниже запрос для создания временной таблицы, чтобы распознать дубликаты и затем удалить их.Однако я получаю сообщение об ошибке «Не удалось удалить из указанных таблиц».Почему этот запрос не работает и как мне отредактировать его для работы?Спасибо!

DELETE [Carrier Name Crosswalk].*
FROM [Carrier Name Crosswalk]
INNER JOIN [Carrier Name Crosswalk] AS [Carrier Name Crosswalk_1]
    ON [Carrier Name Crosswalk].[DYCR TPA_CARRIER] = [Carrier Name Crosswalk_1].[DYCR TPA_CARRIER]
WHERE ((([Carrier Name Crosswalk_1].ID)>[Carrier Name Crosswalk].[ID]));

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вот один из вариантов:

DELETE *
FROM [Carrier Name Crosswalk] t1
WHERE EXISTS (SELECT 1 FROM [Carrier Name Crosswalk] t2
              WHERE t1.[DYCR TPA_CARRIER] = t2.[DYCR TPA_CARRIER] AND
                    t2.ID < t1.ID) = TRUE;

Логика здесь заключается в проверке в предложении EXISTS, если для каждой DYCR TPA_CARRIER мы можем найти в той же таблице другого подходящего носителя, чей *Значение 1006 * на меньше , чем ID текущей записи, рассматриваемой для удаления.Если мы можем найти такую ​​более низкую запись ID, то мы удаляем текущую запись, которая затем должна быть дубликатом.

0 голосов
/ 29 ноября 2018

Вы можете попробовать ниже-

DELETE *
FROM [Carrier Name Crosswalk] AS C1
WHERE C1.[ID]<>
     (SELECT MAX(C2.[ID])
      FROM [Carrier Name Crosswalk] AS C2
      WHERE C2.[DYCR TPA_CARRIER] = C1.[DYCR TPA_CARRIER]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...