请教一个用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







...全文
117 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧