问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在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,然后调用一下。追问谢谢,你能帮忙给写一下吗?我昨晚熬夜也没整出来啊···

追答没空,这个东西,你自己搜索吧,根据网上的东西自己整理出一个。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 在Eclipse-Java中通过新浪API获取北京市一周的微博的代码编写 如何使用java代码访问微博短网址的url 如何用纯Java编一个可以发微博的桌面小程序,追加分 使用java新浪微博API开发,发布微博 谁有微博图片上传的java代码 跪求 ...然后点击分享按钮,分享到腾讯微博的java代码 java 开发微博 求助,如何用java实现同时向多平台发送微博,发送过程如果出错,前台怎么显示 怎样在esclip中写java代码发信息到微博上? [image]200 我想买一个能插卡的路由器,问现在的卡和路由器都是接收4G3G信号5G 车险每年必须交的是什么 求大神告知SpringMVC+Mybatis+easyui中的表单提交的路径怎么写 web。xml: 在什么地方能把5G路由器改为4G? 插卡路由器,卡是中国移动5G卡需要激活码? 魔兽世界中各专业附加的属性是什么? 怎么用VBA给图中块参照(BlockReference)添加属性值 海岛大亨4 内阁成员的属性如何选择?比如国防*=勇气,内务=?其他=?需要次要属性吗? 天下3 60级全念冰心属性参考 求图。 特性和属性的关系 仙剑奇侠传五属性参考 关于开发微博的问题 java jsp 用Java实现,新消息提醒功能,类似于新浪微博的新消息提醒,请问谁有例子 新闻发布时候的静态页面生成 java 谁有java新浪微博api开发的源码示例给小弟一个 什么是银行承兑汇票包买? 简述商业承兑汇票包买衔生操作流程 我有100%保证金了 为什么要到你银行来承兑 男生是不是就应该主动追女生? 男生应不应该表白 表白的话需要男士主动吗? 手机能上传图片到淘宝店铺吗,怎么传 你觉得男生该不该有正式表白? 喜欢一个男生,不知道他是不是喜欢我,到底要不要主动表白啊? 好像喜欢上一个男生但不知道应不应该主动开口,到底要表白吗? 如果喜欢一个男孩子该不该主动对他表白,还是表现得矜持点等他对你表白点好呢? 我和认识一个月的男生互有好感,我该不该向他表白呢? 面对自己喜欢的男生,你会主动去表白吗? “英雄机长”刘传健有了新职务,他曾被授予过哪些称号? 有喜欢的男生到底该不该表白 喜欢了很久的男生,我应不应该主动表白啊?