开发者社区> 问答> 正文

如何在MySQL中执行递归SELECT查询?

我得到一张下表:

col1 | col2 | col3 -----+------+------- 1 | a | 5 5 | d | 3 3 | k | 7 6 | o | 2 2 | 0 | 8 如果用户搜索“ 1”,则程序将查看col1具有“ 1”的,然后它将在col3“ 5”中得到一个值,然后程序将继续在其中搜索“ 5”,col1并且将得到“ 3”在中col3,依此类推。因此它将打印出:

1 | a | 5 5 | d | 3 3 | k | 7 如果用户搜索“ 6”,它将打印出:

6 | o | 2 2 | 0 | 8 如何建立一个SELECT查询来做到这一点?

展开
收起
保持可爱mmm 2020-05-10 18:19:20 444 0
1 条回答
写回答
取消 提交回答
  • @leftclickben提到的解决方案也是有效的。我们也可以对它使用存储过程。

    CREATE PROCEDURE get_tree(IN id int) BEGIN DECLARE child_id int; DECLARE prev_id int; SET prev_id = id; SET child_id=0; SELECT col3 into child_id FROM table1 WHERE col1=id ; create TEMPORARY table IF NOT EXISTS temp_table as (select * from table1 where 1=0); truncate table temp_table; WHILE child_id <> 0 DO insert into temp_table select * from table1 WHERE col1=prev_id; SET prev_id = child_id; SET child_id=0; SELECT col3 into child_id FROM TABLE1 WHERE col1=prev_id; END WHILE; select * from temp_table; END // 我们使用临时表存储输出结果,并且由于临时表是基于会话的,因此不会有关于输出数据不正确的任何问题。来源:stack overflow

    2020-05-10 18:19:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像