求一条sql语句,类似于自连接

yyouyou 2011-05-25 04:17:54
假设有表table1,只有一列为name
table
name
a
b
c
d

现在想通过连接产生一新表,有两列,其数据如下,

name1 name2
a b
a c
a d
b c
b d
c d

请问该如何实现呢,先谢谢了!
...全文
104 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlf1989 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yyouyou 的回复:]
引用 1 楼 andysun88 的回复:
这生成的表有什么规律吗?看不懂,请说明哈。


就是类似于N个物品中,任取2个的组合,比如是4个物品,取两个组合的数目就是 4*3/2 = 6种。

如果新表中有数据第一列为a,第二列为b,那我就不希望再出现第一列数据为b,第二列数据为a的情况。
[/Quote]
二楼符合你的规律
select a.name as name1,b.name as name2 from tb a, tb b
where a.name<b.name
order by a.name
yyouyou 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pt1314917 的回复:]
SQL code
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (name varchar(1))
insert into [tb]
select 'a' union all
select 'b' union all
select 'c' union all
sel……
[/Quote]

顶,高手!我怎么就没想到啊,差距啊!我一直就是想用什么方法去判断有了ab,怎么去掉ba。
谢谢了!
yyouyou 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 andysun88 的回复:]
这生成的表有什么规律吗?看不懂,请说明哈。
[/Quote]

就是类似于N个物品中,任取2个的组合,比如是4个物品,取两个组合的数目就是 4*3/2 = 6种。

如果新表中有数据第一列为a,第二列为b,那我就不希望再出现第一列数据为b,第二列数据为a的情况。
水族杰纶 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pt1314917 的回复:]
SQL code
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (name varchar(1))
insert into [tb]
select 'a' union all
select 'b' union all
select 'c' union all
sel……
[/Quote]
pt1314917 2011-05-25
  • 打赏
  • 举报
回复
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (name varchar(1))
insert into [tb]
select 'a' union all
select 'b' union all
select 'c' union all
select 'd'

select * from [tb] a, tb b
where a.name<b.name
order by a.name
andysun88 2011-05-25
  • 打赏
  • 举报
回复
这生成的表有什么规律吗?看不懂,请说明哈。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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