以下是一個假設情況,它與我真正的問題很接近。表1刪除SQL中的重複項加入
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是獨一無二的。但是,如果我加入名字和姓氏列,這些列不是唯一的並且存在重複項,則我會在內部聯接上獲得重複項。我加入的列越多,它變得越差(創建更多副本)。
在上面的簡單情況下,如何刪除以下查詢中的重複項。我想比較名字和姓氏,如果他們匹配,我返回名字,姓氏和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')
你需要的recid回來 - 如果不是,從查詢中刪除,將解決您的問題。 – Paddy
是的,否則我已經完成了其餘的工作。 –
您需要決定非重複行的邏輯。 CompanyId和RecId是不同的。你想保留哪一個> – JNK