日期:2014-05-18 浏览次数:20583 次
select a.name,b.name from A a ,A b where a.name < b.name
------解决方案--------------------
if object_id('tb') is not null drop table tb create table tb(name varchar(1)) insert into tb select 'a' insert into tb select 'b' insert into tb select 'c' insert into tb select 'd' select id=identity(int,1,1),* into # from( select * from (select 'a' as name1) a ,(select name from tb)a2 union select * from (select 'b' as name1) a ,(select name from tb)a2 union select * from (select 'c' as name1) a ,(select name from tb)a2 union select * from (select 'd' as name1) a ,(select name from tb)a2 )tp where name1<>name create table #2(name1 varchar(20),name varchar(20)) DECLARE cur CURSOR FOR select name1,name from # declare @name1 varchar(20),@name varchar(20) OPEN cur FETCH NEXT FROM cur into @name1,@name insert into #2 select @name1,@name FETCH NEXT FROM cur into @name1,@name WHILE @@FETCH_STATUS = 0 BEGIN if not exists(select 1 from #2 where name1+name=@name1+@name or name1+name=@name+@name1) insert into #2 select @name1,@name FETCH NEXT FROM cur into @name1,@name END CLOSE cur DEALLOCATE cur select * from #2
------解决方案--------------------
create table tb(name varchar(1))
insert into tb select 'a' insert into tb select 'b' insert into tb select 'c' insert into tb select 'd' select a.name as a,b.name as b from tb a,tb b where a.name<b.name order by a.name drop table tb