我得到一张下表:
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
查询来做到这一点?
编辑
@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 //
我们使用临时表存储输出结果,并且由于临时表是基于会话的,因此不会有关于输出数据不正确的任何问题。
SQL FIDDLE Demo
试试这个查询:
SELECT
col1, col2, @pv := col3 as 'col3'
FROM
table1
JOIN
(SELECT @pv := 1) tmp
WHERE
col1 = @pv
**[
SQL FIDDLE Demo](http://sqlfiddle.com/#!2/9635d2/1)**
:| COL1 | COL2 | COL3 |
+------+------+------+
| 1 | a | 5 |
| 5 | d | 3 |
| 3 | k | 7 |
注释
parent_id
值应小child_id
于此解决方案的。
如何构建查询来实现这一点?
问题内容: 如何在MySql中运行此查询? 它会显示如下错误消息: 问题答案: 该语句/方法适用于PostgreSQL和Sybase(我想可能还有更多),所以也许您可以看一下: http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html 它应该向您展示一些使用MySQL的方法(以及PHP中的一两个方法,我只知道它不在您的标签列
问题内容: 关于Mysql中的递归SELECT查询有很多问题,但是大多数答案是“ Mysql中没有递归SELECT查询的解决方案”。 其实有一定的解决方案,我想清楚地知道,所以这个问题是可以在(how-to-do-the-cursive-select-query-in- mysql )中找到的先前问题的以下内容 假设您有此表: &您想在col1中找到所有连接到值“ 1”的链接,即您要打印出: 然后
问题内容: 我有一组按层次结构组织的数据,应该可以增长到任意大小。我需要检索整个树,但是我无法弄清楚如何仅使用SQL来完成。我当前的解决方案是创建一个临时表,并使用递归函数依次查询树的分支,然后将结果存储在临时表中,随后我再次对其进行查询以产生所需的结果。 我的问题是,从本质上讲,我正在执行的联接正确吗?构造一个中间表,然后查询结果。似乎应该有一种使用联接的方法,但是MySQL文档仅涵盖检索有限深
在我正在进行的理解DNS的实验中,我试图理解名称服务器如何进行递归查询。我得到了基本的想法-你从一个顶级dns服务器开始,然后它向你发送一个要联系的权威名称服务器列表,然后你联系这些服务器,等等,直到你得到一个权威的响应。 听起来很简单。 但当我在实践中尝试时,我在第一步后就卡住了。我只是使用命令行工具手动执行此操作-(我确保关闭递归) 好的,那么第1步:从根名称服务器开始。我从维基百科的根名称服
问题内容: 我想选择一个根项,它是尽可能多的孩子。我更喜欢使用嵌套集模型,但是这次表结构遵循 邻接模型 。有关嵌套集和邻接模型的更多信息。 我有一个,一个。 依赖表 项目表 SQL,先尝试 我需要此SELECT递归。 所需的输出 这种情况应该很常见,但是我想知道我现在找不到最佳实践。请注意:它是MySQL,所以我 无法使用CTE ! 您将如何解决这个问题?提前致谢! 问题答案: 作为NoSQL人员