如何在java中实现sql递归查询,实现微博转发路径的表示,如以下表_百 ...
发布网友
发布时间:2022-04-30 02:23
我来回答
共2个回答
热心网友
时间:2022-04-08 07:16
create table message(
InfoID int,
TransID int,
UserName varchar(20)
);
insert into message(InfoID,TransID,UserName) values(1000,2000,'张三');
insert into message(InfoID,TransID,UserName) values(2000,3000,'李四');
insert into message(InfoID,TransID,UserName) values(3000,4000,'王五');
insert into message(InfoID,UserName) values(4000,'小刘');
首先找到第一个发微博的人,怎么确定呢?因为他的TransID也就是转发消息ID 为NULL
select UserName from message where TransID is null
+----------+
| UserName |
+----------+
| 小刘 |
+----------+
取出第一个转发微博的姓名
select UserName from message where TransID in(
select InfoID from message where TransID is null)
+----------+
| UserName |
+----------+
| 王五 |
+----------+
取出第二个转发微博的姓名
select UserName from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID is null)
)
+----------+
| UserName |
+----------+
| 李四 |
+----------+
取出第三个转发微博的姓名
select UserName from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID is null)
)
)
+----------+
| UserName |
+----------+
| 张三 |
+----------+
然后把所有人连起来
select UserName from message where TransID is null
union
select UserName from message where TransID in(
select InfoID from message where TransID is null)
union
select UserName from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID is null)
)
union
select UserName from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID in(
select InfoID from message where TransID is null)
)
)
运行的结果:
+----------+
| UserName |
+----------+
| 小刘 |
| 王五 |
| 李四 |
| 张三 |
+----------+
以上代码就是给你一个思路, 最好写一个循环来查找,按照这个思路做
希望对你有帮助追问真的是非常感谢,不过如何让结果显示为:
微博源 转发者1 转发者2 转发者3
小刘 王五 李四 张三
,还有如何在java中实现循环能给解答一下吗?
我实在是弄不出来了,希望交个朋友求指导!
追答如果改变显示方式 就要把行变成列 ,如果java循环 直接查询
+----------+
| UserName |
+----------+
| 小刘 |
| 王五 |
| 李四 |
| 张三 |
+----------+
其中第一个就是 微博源
其他的依次 往下
热心网友
时间:2022-04-08 08:34
mysql的话,好像要自己写个function才行啊。
我记得是这样的。
要不你自己写一个function,然后调用一下。追问谢谢,你能帮忙给写一下吗?我昨晚熬夜也没整出来啊···
追答没空,这个东西,你自己搜索吧,根据网上的东西自己整理出一个。