我有一个表格如下
TaskID ParentTaskID
1 1
2 1
3 2
4 2
5 2
10 10
11 11
12 11
13 0
14 14
Run Code Online (Sandbox Code Playgroud)
如果taskid为1,我想得到如下结果
TaskID
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
如果是2那么
Taskid
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
如果它10然后10
意味着我想选择具有taskid = 1的行,其行具有parenttaskid = 1,其中行具有上述选择中的parenttaskid等等........
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |