日期:2014-05-18  浏览次数:20614 次

求一条SQL,去掉重复数据
表T的数据如下,
A B
-------
A1 B1
A1 B2
A2 B1
A3 B2

希望得到
A B
--------
A1 B1
A2 B2
A3


------解决方案--------------------
SQL code
select * from tb t where not exists(select 1 from tb where a=t.a and b<t.b)

------解决方案--------------------
SQL code
create table T (a varchar(16), b varchar(16))
insert into T
select 'A1','B1' union
select 'A1','B2' union
select 'A2','B1' union
select 'A3','B2'

declare @tb_a table (id int identity(1,1), ch varchar(16))
declare @tb_b table (id int identity(1,1), ch varchar(16))

insert into @tb_a
select distinct a 
from T 
order by a

insert into @tb_b
select distinct b
from T 
order by b

select i.id, a.ch, b.ch
from (select id from @tb_a union select id from @tb_b) as i
left join @tb_a as a on a.id = i.id
left join @tb_b as b on b.id = i.id

drop table T


-- id    ch    ch
-- 1    A1    B1
-- 2    A2    B2
-- 3    A3