Удаление дубликатов из SQL Join

Ниже приведены гипотетические ситуации, которые близки к моей реальной проблеме. Таблица1

recid   firstname    lastname   company
1       A             B          AAA
2       D             E          DEF
3       G             H          IJK
4       A             B          ABC

У меня есть таблица2, которая выглядит так

recid   firstname    lastname   company
10      A             B          ABC
20      D             E          DEF
30      M             D          DIM
40      A             B          CCC

Теперь, если я присоединюсь к таблице по recid, она выдаст 0 результатов, дубликатов не будет, потому что recid уникален. Но если я присоединяюсь к столбцам firstname и lastname, которые не уникальны и есть дубликаты, я получаю дубликаты во внутреннем соединении. Чем больше столбцов я добавляю при объединении, тем хуже становится (создается больше дубликатов).

В приведенной выше простой ситуации, как я могу удалить дубликаты в следующем запросе. Я хочу сравнить имя и фамилию, если они совпадают, я возвращаю имя, фамилию и recid из таблицы2

select distinct * from
(select recid, first, last from table1) a
inner join
(select recid, first,last from table2) b
on a.first = b.first

Сценарий здесь, если кто-то захочет поиграть с ним в будущем

create table table1 (recid int not null primary key, first varchar(20), last varchar(20), company varchar(20))
create table table2 (recid int not null primary key, first varchar(20), last varchar(20), company varchar(20))

insert into table1 values(1,'A','B','ABC')
insert into table1 values(2,'D','E','DEF')
insert into table1 values(3,'M','N','MNO')
insert into table1 values(4,'A','B','ABC')

insert into table2 values(10,'A','B','ABC')
insert into table2 values(20,'D','E','DEF')
insert into table2 values(30,'Q','R','QRS')
insert into table2 values(40,'A','B','ABC')
18
задан Hammad Khan 16 August 2011 в 20:28
поделиться