中易网

如何在java中实现sql递归查询,实现微博转发路径的表示,如以下表

答案:3  悬赏:80  
解决时间 2021-11-16 02:08
表 table,InfoID为消息ID,即转发后生成的ID号,TransID为转发消息ID,为消息在原来博主界面的ID号
InfoID TransID UserName
---------------------------------------
1000 2000 张三
2000 3000 李四
3000 4000 王五
4000 小刘

在java中写个mysqlSQL语句,然后得到下面的结果
小刘的微博->王五的微博->李四的微博->张三的微博 这样的转发关系,如何实现呢?
不胜感激
最佳答案
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 |
+----------+
| 小刘 |
| 王五 |
| 李四 |
| 张三 |
+----------+

以上代码就是给你一个思路, 最好写一个循环来查找,按照这个思路做

希望对你有帮助
全部回答
mysql的话,好像要自己写个function才行啊。 我记得是这样的。 要不你自己写一个function,然后调用一下。
你好! mysql的话,好像要自己写个function才行啊。 我记得是这样的。 要不你自己写一个function,然后调用一下。 如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
古典家具摆件有什么特点?
液体壁纸比较好的品牌有那些??液体壁纸加盟
上海登记结婚照片注意事项?
个税什么时候扣的
黔东南州气象局办公地址在什么地方,我要处理
同恶相济是什么意思啊?
联想ih61m主板参数是怎样的
请问北京樱桃多少钱一斤
我是成年男性,问左下腹部隐痛的原因
求一道填空题(人体中的微量元素)
三穗县气象局办公地址在什么地方,我要处理点
層級的意思是什么?層級的释义是什么啊?
急!急!用C#SqlDataAdapter做用户登入连接数
2010年1月24日去香港火车票什么时间买
童乐琴行艺术培训中心地址在哪,我要去那里办
推荐资讯
广州火车票代售点几点开始卖票?
贱值的意思是什么?贱值的释义是什么啊?
我是博山富安集团的,你们知道吗
仁化县公安局丹霞派出所办公地址在什么地方,
为什么熟手学唱歌不用节拍器?
丁魏村村民委员会这个地址在什么地方,我要处
上海汽配城比较大的有哪些?
如何取消我预订的酒店?
机房空调验收标准是什么
我想问一下小米手机有没有双卡双待的?
怎么用空间顺序介绍一件工艺品写作文啊要600
名座·自然护肤美造型spa地址在哪,我要
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?