请教一个用sql语句实现数据集的自连接问题

ivylxj 2011-02-26 08:23:22
请教论坛里各位高手一个问题:

某个数据集包含数据4列,itme1,value1,item2,value2
数据为:

I1,1,I2,1
I1,1,I3,1
I1,1,I5,1
I2,1,I3,1
I2,1,I4,1
I2,1,I5,1

请教如何写sql可以实现数据集的自连接,输出结果不重复,如以上数据集应输出:
I1,1,I2,1,I3,1
I1,1,I2,1,I4,1
I1,1,I2,1,I5,1
I2,1,I3,1,I4,1
I2,1,I3,1,I5,1
I2,1,I4,1,I5,1







...全文
68 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ivylxj 2011-03-07
非常感谢~~~~

回复
dawugui 2011-02-26
create table tb (itme1 varchar(10),value1 int,item2 varchar(10),value2 int)
insert into tb values('I1',1,'I2',1)
insert into tb values('I1',1,'I3',1)
insert into tb values('I1',1,'I5',1)
insert into tb values('I2',1,'I3',1)
insert into tb values('I2',1,'I4',1)
insert into tb values('I2',1,'I5',1)
go

select distinct t1.* , t2.* , t3.* from
(
select itme1 item, value1 value from tb
union
select item2 item, value2 value from tb
) t1,
(
select itme1 item, value1 value from tb
union
select item2 item, value2 value from tb
) t2,
(
select itme1 item, value1 value from tb
union
select item2 item, value2 value from tb
) t3
where t1.item < t2.item and t2.item < t3.item
order by t1.item , t2.item , t3.item

drop table tb

/*
item value item value item value
---------- ----------- ---------- ----------- ---------- -----------
I1 1 I2 1 I3 1
I1 1 I2 1 I4 1
I1 1 I2 1 I5 1
I1 1 I3 1 I4 1
I1 1 I3 1 I5 1
I1 1 I4 1 I5 1
I2 1 I3 1 I4 1
I2 1 I3 1 I5 1
I2 1 I4 1 I5 1
I3 1 I4 1 I5 1

(所影响的行数为 10 行)
*/
回复
dawugui 2011-02-26
select distinct t1.* , t2.* , t3.* from
(
select itme1 itme, value1 value from tb
union
select itme2 itme, value2 value from tb
) t1,
(
select itme1 itme, value1 value from tb
union
select itme2 itme, value2 value from tb
) t2,
(
select itme1 itme, value1 value from tb
union
select itme2 itme, value2 value from tb
) t3
where t1.item < t2.item and t2.item < t3.item
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-02-26 08:23
社区公告
暂无公告