Как удалить повторяющиеся строки в таблице на основе того, что должно быть уникальным столбцом, ссылающимся на таблицу в другой базе данных - PullRequest
0 голосов
/ 27 января 2020
Table A

LoginID|FacilityID|LoginName|PersonID|DateOfBirth|
    111|        20| Person_A|     101| 01/01/1990|
    212|        20| Person_B|     230| 02/02/1991|
    456|        20| Person_C|     101| 03/03/1992|
    987|        20| Person_A|     808| 01/01/1990|
Table B

PersonID|FacilityID|LastName|FirstName|DateOfBirth|
     101|        20|   Stone|     Beth| 03/03/1992|
     230|        20|   Jones|      Bob| 02/02/1991|
     808|        20|   Brown|     Jack| 01/01/1992|

В Таблице PersonID относится к Таблице B другая база данных и предполагается, что она здесь уникальна. По причинам, это не так, и хранимая процедура, которая использует PersonID и FacilityID в качестве входных параметров, возвращает несколько строк для экземпляров этого дублированного PersonID. Я хотел бы удалить верхнюю запись в таблице A, поскольку она не принадлежит, сравнивая ее с тем, каким должен быть PersonID.

Я думал о том, чтобы сравнить PersonID и DOB здесь с Таблицей B и удалить записи, которые не совпадали, однако я не смог найти способ сделать это.

Ответы [ 2 ]

1 голос
/ 27 января 2020

Я понимаю, что вы хотите удалить записи, для которых нет соответствующей записи в другой таблице с теми же PersonId и DateOfBirth.

Если это так, вы можете использовать анти- left join следующим образом:

delete t
from mytable t
left join myothertable t1 
    on t1.PersonId = t.PersonId and t1.DateOfBirth = t.DateOfBirth
where t1.personId is null
0 голосов
/ 27 января 2020

GMB ответ в порядке. Однако я думаю, что not exists - более естественный подход:

delete a
    from a
    where not exists (select 1
                      from b
                      where b.personid = a.personid and b.dob = a.dob
                     );

Вы также можете включить facilityid в сравнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...