求一个查询链的sql

hbgzg3006 2016-08-03 05:18:53
表结构大概是这样的
oldid newid content
1 2 haha
4 5 ceshi
2 3 three
3 4 four

给定一个newid的值,能查询到他所有的演变过程
比如给定3 则能查询出 2 1 (因为3的old是2,而2的old是1,1的old不存在)
同样给定5 能查询出 4 3 2 1,解释同上。

谢谢。
...全文
110 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
致命的西瓜 2016-08-03
  • 打赏
  • 举报
回复
引用 11 楼 hbgzg3006 的回复:
[quote=引用 10 楼 hbgzg3006 的回复:] 大神们,貌似我找到了一个方法,不知道行不行。 http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
这个根据父id查子id可以,根据子id查父id貌似不行。[/quote] 原理都是一样的 只是颠倒父子id 上面链接的思路也都差不多,函数每次找一层,接受返回值变量再继续调用,最好根据自己业务定制,案例都是基于业务的
hbgzg3006 2016-08-03
  • 打赏
  • 举报
回复
引用 10 楼 hbgzg3006 的回复:
大神们,貌似我找到了一个方法,不知道行不行。 http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
这个根据父id查子id可以,根据子id查父id貌似不行。
hbgzg3006 2016-08-03
  • 打赏
  • 举报
回复
大神们,貌似我找到了一个方法,不知道行不行。 http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
zjcxc 2016-08-03
  • 打赏
  • 举报
回复
没有,自己写
致命的西瓜 2016-08-03
  • 打赏
  • 举报
回复
借用版主大神的blog 参考 http://blog.csdn.net/ACMAIN_CHM/article/details/4142971
致命的西瓜 2016-08-03
  • 打赏
  • 举报
回复
。。额 那个child_list 是我本地的函数 配合FIND_IN_SET改造过的 ,确实没有直接函数
hbgzg3006 2016-08-03
  • 打赏
  • 举报
回复
引用 3 楼 zjcxc 的回复:
有1楼的那种顺序关系么?有就1楼的,没有就要写存储过程了,mysql 没有递归查询
请大神明示。写存储过程有点复杂啊。没有现成的递归函数吗?
hbgzg3006 2016-08-03
  • 打赏
  • 举报
回复
引用 2 楼 wangjian0228 的回复:
应该是深度递归 这个: select * from treeNodes where FIND_IN_SET(newid , getChildLst(5));
没看懂啊大神。
hbgzg3006 2016-08-03
  • 打赏
  • 举报
回复
不是这种大神,不一定是小的关系,我举的例子刚好是这样的。就是
每条记录就是一个由旧变新的过程,然后新的可能再变,我要根据现在的结果,查询到他之前都是经过了什么转换到的目前的结果。
有可能
oldid newid
67 72
78 74
74 80

给定80 能查询到 74 78 这么一个过程。
zjcxc 2016-08-03
  • 打赏
  • 举报
回复
有1楼的那种顺序关系么?有就1楼的,没有就要写存储过程了,mysql 没有递归查询
致命的西瓜 2016-08-03
  • 打赏
  • 举报
回复
应该是深度递归 这个: select * from treeNodes where FIND_IN_SET(newid , getChildLst(5));
致命的西瓜 2016-08-03
  • 打赏
  • 举报
回复
select * from table where newid <= your_id
这种?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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