如何从多对多的关系的列表中快速搜索出有关联的记录?

pppplato 2006-03-07 01:06:41
有如下的表结构
acct_no group_id group2_id
---------------------------------
1 1
2 1
2 2
3 2
4 3
4 4
5 4
现在从acct_no出发,要找出与它有关联的记录进行在分组,即1,2,3为一组,4,5为一组.有关联的意思是指两个acct之间可以通过acct_no或group_id直接或间接的关联.在这个例子中1和2在一个组,2和3在一个组,,所以1,3也在一个组.
运行结果应该是这样的
acct_no group_id group2_id
---------------------------------
1 1 1
2 1 1
2 2 1
3 2 1
4 3 2
4 4 2
5 4 2
现在这个表大概有六万条记录,要如何做才能比较快的进行分组.我先前的方法是把所有记录一次性导入java的list中,然后循环遍历查找.
有那位大侠有什么更好的算法,或者如何提高这个遍历算法?
...全文
109 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
windindance 2006-03-07
  • 打赏
  • 举报
回复
又测试了一下,好像偶的代码在某些特定情况下的结果不正确……
windindance 2006-03-07
  • 打赏
  • 举报
回复
看了半天才明白你的意思……
用SQL 可能会快一些。

update temp set g2=(
select case when min(t2.g)>min(t3.g) then min(t2.g) else min(t3.g) end from temp as t2, temp as t3
where
(t2.a=t3.a or t2.g=t3.g)
and (t2.g=temp.g or t3.g=temp.g)
)

代码很复杂,我就不讲了……(偶也是凑出来滴^_^)
temp是表名。
a、g、g2分别是字段:acct_no group_id group2_id
tomuno 2006-03-07
  • 打赏
  • 举报
回复
优化sql
oracle有个decode函数可以将1,2,3分为一组,4,5分为一组

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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