选择父ID作为条件的所有子项

时间:2016-04-06 20:33:47

标签: sql oracle recursive-query

我有这样的数据:

WHERE PARENT_ID = 1

现在,我想选择父ID为参数的所有记录(及其本身)。例如,如果参数= 0则返回所有记录。

这是id parent_id name ----------------------------- 1 0 John 10 1 Anna 11 1 Doe 101 10 Chris

的理想结果
SELECT * FROM TABLE
WHERE PARENT_ID = 1
OR ID = 1

id = 101的记录包含在resultset中,因为parent = 10,其中id 10是id = 1的子项 我无法解决这个问题。

我试试:

:QOne
echo Do you want 3RVX? (Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If /I "%INPUT%"=="y" goto Yes
If /I "%INPUT%"=="n" goto No
:Yes
echo axSched.exe %COMPNAME% "3RVX" /t "%DATE% %TIME%" /y > %NAMEINPUT%.txt
goto QTwo
:No
echo "REM axSched.exe %COMPNAME% "3RVX" /t "%DATE% %TIME%" /y" > NAMEINPUT%.txt

这不会返回记录,其中parent_id = 10.请帮忙。

2 个答案:

答案 0 :(得分:1)

您可能需要构建Hierarchical Query

SELECT * FROM TABLE
WHERE 1=1
START WITH ID = 1
CONNECT BY PRIOR ID = PARENT_ID

编辑: 结果:

 ID  PARENT_ID  NAME
  1          0  John
 10          1  Anna
101         10  Chris
 11          1  Doe

答案 1 :(得分:0)

您可以尝试以下代码:

SELECT * FROM TABLE WHERE START WITH ID = 1 CONNECT BY PARENT_ID = PRIOR ID