Oracle中 A换成B B又换成C C 又换成D 随便查一个都出来

H_Gragon 2015-01-17 05:47:17
如下面:
号码 新号码
A B
B C
C D
D E
……


随便搜索一个号码 关联的一连串号码都查出来: 无论是差A、B、C、D、E都能得到上述结果
...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqi_521_csdn 2015-01-28
  • 打赏
  • 举报
回复
ORACLE 的递归查询。 START WITH 。。。。 CONNECT BY PRIOR 。。。。
bw555 2015-01-25
  • 打赏
  • 举报
回复
引用 5 楼 cnceohjm 的回复:
[quote=引用 1 楼 bw555 的回复:] 向前向后分别查询然后union all 到一起
select 号码,新号码
from T
START WITH 新号码='指定的号码'
CONNECT BY PRIOR 号码=新号码
UNION ALL
select 号码,新号码
from T
START WITH 号码='指定的号码'
CONNECT BY PRIOR 新号码=号码
报错啊,版主[/quote] 报什么错啊?是不是你的数据中存在循环,如A变为B,然后B再变成A? 试试加上connect by nocycle
H_Gragon 2015-01-25
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
向前向后分别查询然后union all 到一起
select 号码,新号码
from T
START WITH 新号码='指定的号码'
CONNECT BY PRIOR 号码=新号码
UNION ALL
select 号码,新号码
from T
START WITH 号码='指定的号码'
CONNECT BY PRIOR 新号码=号码
报错啊,版主
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
[quote=引用 2 楼 z_shousi 的回复:] 没看懂 楼主意图
楼主说的太复杂了,说得简单点 就好比这个表是存储每个人手机号的变更记录,从一个号变成另外一个号 要求输入这个人使用过的任意手机号,把这个人所有手机号的变更记录都查询出来[/quote] 嗯,了然。 你那个sql向上 向下树形查询 union起来,略屌啊。
bw555 2015-01-19
  • 打赏
  • 举报
回复
引用 2 楼 z_shousi 的回复:
没看懂 楼主意图
楼主说的太复杂了,说得简单点 就好比这个表是存储每个人手机号的变更记录,从一个号变成另外一个号 要求输入这个人使用过的任意手机号,把这个人所有手机号的变更记录都查询出来
  • 打赏
  • 举报
回复
没看懂 楼主意图
bw555 2015-01-17
  • 打赏
  • 举报
回复
向前向后分别查询然后union all 到一起
select 号码,新号码
from T
START WITH 新号码='指定的号码'
CONNECT BY PRIOR 号码=新号码
UNION ALL
select 号码,新号码
from T
START WITH 号码='指定的号码'
CONNECT BY PRIOR 新号码=号码

3,491

社区成员

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

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