高分讨论~如何实现Table的递归查询~

daniel_kaka 2007-08-08 10:03:39
这是一个比较老的问题了,但是最近要用到,却忘记怎么查了~高手帮帮忙~

表table_a
列名 id parent_id name
0 -1 -
1 0 a
2 1 b
3 1 c
4 1 d
5 2 e
6 2 f
7 3 g
8 4 h
9 6 i
10 8 j
11 9 k
12 11 l

例子就给这些数据吧,查询要求:
1,查出parent_id=1的所有项;
2,如果某一个id被查出来,那么它的所有子项也要被查出来,如:
id=3被查出来,那么parent_id=3的所有项也要被查出来;

请高手们讨论一下:
1,哪种方法查询sql语句最简单?
2,哪种方法查询sql语句效率最高?

请大家写出自己的能够执行的并且结果正确的sql语句~
...全文
304 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
livan1038 2007-08-09
  • 打赏
  • 举报
回复
是有點難度,關注一下。
daniel_kaka 2007-08-09
  • 打赏
  • 举报
回复
sql的procedure和function可以支持递归查询,但到目前还没想出该怎么写!~~
rorey_008 2007-08-09
  • 打赏
  • 举报
回复
SQL是不能递归的,建议你用程序去写
daniel_kaka 2007-08-09
  • 打赏
  • 举报
回复
真的没有一个很好的解决方案吗~~
daniel_kaka 2007-08-08
  • 打赏
  • 举报
回复
不是用来显示树的,我只是需要各级部门的成员,不需要显示的
myydzhz 2007-08-08
  • 打赏
  • 举报
回复
需要用函数,看起来楼上象是要显示树,如果那样的话最好不要用递归
tdy1234 2007-08-08
  • 打赏
  • 举报
回复
路过 学习下
流浪汉促销员 2007-08-08
  • 打赏
  • 举报
回复

一起关注...
wmzsl 2007-08-08
  • 打赏
  • 举报
回复
1
hbwhwang 2007-08-08
  • 打赏
  • 举报
回复
SQL不支持递归,这个问题用程序解决比用SQL解决更合适
daniel_kaka 2007-08-08
  • 打赏
  • 举报
回复
改正下:

我的要求是所有parent_id=1的正确的结果应该是
除了id=0的所有项~

“递归查询”这点我在题目中已经写明,请大家好好看一下~
daniel_kaka 2007-08-08
  • 打赏
  • 举报
回复
to:
yueliangdao0608((深圳PHPER,MSN:yueliangdao0608@gmail.com)) ( )

我前面的1,2两点是同一项查询要求,其实2是对1的补充,不是你所理解的2个不同查询~

抱歉,可能是我说得不够清楚~

另外,你的
select * from table_a a inner join table_a b on a.id=b.id and a.id=3;
id parent_id name id1 parent_id1 name1
3 1 c 3 1 c
查询结果也不是正确的~


我不要求是所有parent_id=1的正确的结果应该是
除了id=0的所有项~

“递归查询”这点我在题目中已经写明,请大家好好看一下~
懒得去死 2007-08-08
  • 打赏
  • 举报
回复
create table table_a(id int(11) not null, parent_id int(11), name char(1),primary key(id)) engine=innodb
default charset=utf8;
insert into table_a values(0,-1,'-'),
(1, 0, 'a'),
(2, 1, 'b'),
(3, 1, 'c'),
(4, 1, 'd'),
(5, 2, 'e'),
(6, 2, 'f'),
(7, 3, 'g'),
(8, 4, 'h'),
(9, 6, 'i'),
(10, 8, 'j'),
(11, 9, 'k'),
(12, 11, 'l');

select * from table_a where parent_id = 1;
select * from table_a a inner join table_a b on a.id=b.id and a.id=3;
daniel_kaka 2007-08-08
  • 打赏
  • 举报
回复
~~~~
怎么没人接分

~~~~
是不是嫌分少 !~
daniel_kaka 2007-08-08
  • 打赏
  • 举报
回复
补充一点,数据库是MySql数据库~
ochinchina 2007-08-08
  • 打赏
  • 举报
回复
SQL好像不能递归耶,如果表不大的话,可以将表中的数据全部查出来,自己在程序中筛选出所要的数据

62,614

社区成员

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

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