求,分组算法

草青工作室 2012-02-02 06:52:58
/*
有下面的结果集

a1 b1
-----
1 1
2 2
3 3

使用 sql 将结果分类组合,得到下面的结果集
相同数据只组合一次,如 1,2 和 2,1 这种不算在组合和范围内
a1 b1
-----
1 2
1 3
2 3

如何使用 sql servier 实现
*/


写了一个脚本,单如果是 字符或者其它的id 就不好使了
脚本如下
select *
from
(select 1 a1 union select 2 a1 union select 3 a1) a,
(select 1 b1 union select 2 b1 union select 3 b1) b
where a.a1<b.b1;
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
勿勿 2012-02-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xxj_jing 的回复:]
最后还是用程序实现了,sql 必定不是处理数据语言 -_-
我使用递归实现,在 sql server 中也可以使用类似方式实现,
这就需要自己写一个函数了,然后实现递归调用
[/Quote] 那就结贴吧、
草青工作室 2012-02-08
  • 打赏
  • 举报
回复
最后还是用程序实现了,sql 必定不是处理数据语言 -_-
我使用递归实现,在 sql server 中也可以使用类似方式实现,
这就需要自己写一个函数了,然后实现递归调用
  • 打赏
  • 举报
回复
/*
有下面的结果集

a1 b1
-----
1 1
2 2
3 3

使用 sql 将结果分类组合,得到下面的结果集
相同数据只组合一次,如 1,2 和 2,1 这种不算在组合和范围内
a1 b1
-----
1 2
1 3
2 3

如何使用 sql servier 实现
*/
go
if OBJECT_ID('tbl')is not null
drop table tbl

go
create table tbl(
a1 int,
b1 int
)
go
insert tbl
select 1,1 union all
select 2,2 union all
select 3,3


select a.a1,b.b1 from tbl a cross join tbl b where a.a1<b.a1

/*
结果:
a1 b1
1 2
1 3
2 3
*/
叶子 2012-02-02
  • 打赏
  • 举报
回复

declare @T table (a1 int,b1 int)
insert into @T
select 1,1 union all
select 2,2 union all
select 3,3

select a.a1,b.b1 from @T a cross join @T b where a.a1<b.a1
/*
a1 b1
----------- -----------
1 2
1 3
2 3
*/
叶子 2012-02-02
  • 打赏
  • 举报
回复

--字符也是一样的呀?
select * from
(select '1' a1 union select '2' a1 union select '3' a1) a,
(select '1' b1 union select '2' b1 union select '3' b1) b
where a.a1<b.b1
/*
a1 b1
---- ----
1 2
1 3
2 3
*/

22,209

社区成员

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

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