我有一个格式如下的表格
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/