mysql - mysql中的递归选择

标签 mysql sql

我有一个格式如下的表格

TaskID  ParentTaskID
1       1
2       1
3       2
4       2
5       2
10      10
11      11
12      11
13      0
14      14

如果 taskid 为 1,我想要如下结果

TaskID
1
2
3
4
5

如果是2那么

Taskid
2
3
4
5

如果它是 10 那么 10

表示我想选择 taskid = 1 的行和 parenttaskid = 1 的行 在上面的选择中有 parenttaskid 的行等等.......

请使用这个 fiddle http://sqlfiddle.com/#!2/9db0c3/6

最佳答案

MySQL 不支持递归选择。

但是,下面的查询应该可以解决您正在寻找的问题

SELECT t.TaskID
FROM task AS t
INNER JOIN (
    SELECT DISTINCT a.TaskID 
    FROM task AS a
    INNER JOIN (
        SELECT TaskID 
        FROM task
        WHERE TaskID = 11 OR ParentTaskID = 11
        UNION ALL
        SELECT ParentTaskID
        FROM task
        WHERE TaskID = 11 OR ParentTaskID = 11
    ) AS s ON s.TaskID = a.ParentTaskID
) AS s ON s.TaskID = t.TaskID

关于mysql - mysql中的递归选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27393645/

相关文章:

mysql - 限制coldfusion中mysql显示的字符数

mysql - 如何提取多行字符串字段中最常用的字符?

php - 使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

sql - 如何在 Spark SQL 中为posexplode 列指定别名?

mysql - 如何确定 MySQL 批量插入的缓冲区大小

mysql - 更新外键表

mysql - 使用连接表进行分组并计算总和

mysql - SQL多对多关系解决方案: intermediate table or xml query?

mysql - 具有许多表的复杂查询,这可以在一个查询中实现吗?

mysql - SQL where 存在,同时保留它们之间的值