oracle
SELECT LEVEL AS LVL,
TPL.PORT_ID,
TPL.PARENT_PORTID
FROM TN_PONLINK TPL
START WITH TPL.DEV_ID = 'F62A1470D64111E6990CAC577F000001'
CONNECT BY PRIOR TPL.PARENT_PORT_IN = TPL.PORT_ID

pgsql
select A.LVL,
A.PORT_ID,
A.PARENT_PORTID
from (
WITH RECURSIVE R AS (
SELECT 1 as LVL,TPL.PORT_ID,TPL.PARENT_PORTID,PARENT_PORT_IN
FROM (select * from TN_PONLINK
WHERE DEV_ID = 'B24AE78015B711E5BE747DD47F000001') TPL
UNION ALL
SELECT R.LVL+1 as LVL,
TPI.PORT_ID,
TPI.PARENT_PORTID,
TPI.PARENT_PORT_IN
FROM TN_PONLINK TPI
JOIN R ON R.PARENT_PORT_IN = TPI.PORT_ID
)SELECT LVL,PORT_ID,PARENT_PORTID FROM R ) as A

本文探讨了在Oracle和PostgreSQL数据库中进行递归查询的方法。示例展示了如何使用Oracle的`CONNECT BY PRIOR`和PostgreSQL的`WITH RECURSIVE`子句来遍历树形结构数据,寻找特定设备ID下的所有关联端口。这两个查询语法的不同之处在于它们的结构和用法,但都能实现相同的功能。
1711





