Sau đây là một tình huống giả định, điều này gần với vấn đề thực sự của tôi. Table1Xóa các bản sao khỏi SQL Tham gia
recid firstname lastname company
1 A B AAA
2 D E DEF
3 G H IJK
4 A B ABC
Tôi có một table2 mà trông như thế này
recid firstname lastname company
10 A B ABC
20 D E DEF
30 M D DIM
40 A B CCC
Bây giờ nếu tôi tham gia bảng trên recid, nó sẽ cho kết quả 0, sẽ không có bản sao vì recid là duy nhất. Nhưng nếu tôi tham gia vào firstname và lastname cột, mà không phải là duy nhất và có bản sao, tôi nhận được bản sao vào bên trong tham gia. Càng nhiều cột tôi thêm vào tham gia, càng tệ thì càng trở thành (nhiều bản sao được tạo).
Trong tình huống đơn giản ở trên, làm cách nào tôi có thể xóa các mục trùng lặp trong truy vấn sau. Tôi muốn so sánh firstname và lastname, nếu họ khớp, tôi trở firstname, lastname và recid từ table2
select distinct * from
(select recid, first, last from table1) a
inner join
(select recid, first,last from table2) b
on a.first = b.first
Script là ở đây nếu có ai muốn chơi với nó trong tương lai
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')
Bạn cần recid lại - nếu không, loại bỏ nó từ truy vấn của bạn sẽ khắc phục sự cố. – Paddy
có, nếu không tôi đã làm phần còn lại. –
Bạn cần phải quyết định logic cho các hàng không song công của mình. CompanyId và RecId là khác nhau cho các bản dupes của bạn. Bạn muốn giữ cái nào trong số này> – JNK