mysql递归,如何在MySql中使用递归查询?

WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS

( SELECT a, b, 1 AS distance,

a || '.' || b || '.' AS path_string,

b AS direct_connection

FROM edges2

WHERE a = 1 -- set the starting node

UNION ALL

SELECT tc.a, e.b, tc.distance + 1,

tc.path_string || e.b || '.' AS path_string,

tc.direct_connection

FROM edges2 AS e

JOIN transitive_closure AS tc ON e.a = tc.b

WHERE tc.path_string NOT LIKE '%' || e.b || '.%'

AND tc.distance < 3

)

SELECT * FROM transitive_closure

--WHERE b=3 -- set the target node

ORDER BY a,b,distance

how to run this query in MySql?

it will show error message like this:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RECURSIVE transitive_closure(a, b, distance, path_string) AS ( SELECT a, b, 1 A' at line 1

解决方案

The WITH RECURSIVE statement/method is applicable in PostgreSQL and Sybase (and maybe a few more, I think), so maybe you can look at this instead:

It should show you some approaches using MySQL (and one or two in PHP, just to mention -- I know it's not in your tag list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值