永发信息网

写一个sql查询它的子级,如果有子级再查询子级的子级,如图

答案:4  悬赏:60  手机版
解决时间 2021-04-26 20:12
  • 提问者网友:难遇难求
  • 2021-04-26 10:56
写一个sql查询它的子级,如果有子级再查询子级的子级,如图
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-04-26 12:28
公共表查询,应该是你想要的!可能跟你想要的还有点差别,不过在sql里实现递归的话就用公共表表达式with,楼主你再根据自己需要改吧。
给你个例子:(抄别人的)
CREATE TABLE [tb_loc](
[id] [int],
[name] [varchar](16),
[parent] [int]
)

INSERT tb_loc(id,name,parent) VALUES( 1,'河北省',NULL)
INSERT tb_loc(id,name,parent) VALUES( 2,'石家庄',1)
INSERT tb_loc(id,name,parent) VALUES( 3,'保定',1)
INSERT tb_loc(id,name,parent) VALUES( 4,'山西省',NULL)
INSERT tb_loc(id,name,parent) VALUES( 5,'太原',4)
INSERT tb_loc(id,name,parent) VALUES( 6,'新华区',2)
INSERT tb_loc(id,name,parent) VALUES( 7,'北焦村',6)
INSERT tb_loc(id,name,parent) VALUES( 8,'大郭村',6)
INSERT tb_loc(id,name,parent) VALUES( 9,'河南省',NULL)
INSERT tb_loc(id,name,parent) VALUES( 10,'大郭村南',8)
INSERT tb_loc(id,name,parent) VALUES( 11,'大郭村北',8)
INSERT tb_loc(id,name,parent) VALUES( 12,'北焦村东',7)
INSERT tb_loc(id,name,parent) VALUES( 13,'北焦村西',7)
INSERT tb_loc(id,name,parent) VALUES( 14,'桥东区',3)
INSERT tb_loc(id,name,parent) VALUES( 15,'桥西区',3) ;

WITH locs(id,name,parent,loclevel)
AS
(
SELECt id,name,parent,0 AS loclevel FROM tb_loc
WHERe parent IS NULL
UNIOn ALL
SELECt l.id,l.name,l.parent,loclevel+1 FROM tb_loc l
INNER JOIN locs p ON l.parent=p.id
)

SELECt * FROM locs;
全部回答
  • 1楼网友:一袍清酒付
  • 2021-04-26 15:27
有子级就加子查询
  • 2楼网友:平生事
  • 2021-04-26 14:26
???有点看不懂~
有子级就加子查询吧,一直有子级,那就是设计表设计得不好的问题了!
  • 3楼网友:青灯有味
  • 2021-04-26 13:30
要看你是什么数据库,如果是oracle很容易实现的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯