MySQl、SQLServer和Oracle中的分层查询
我试图在oracle/mysql/sqlserver中实现Connect By查询,以了解工作中的差异。试图了解它是如何工作的。我有一张简单的桌子,看起来像:MySQl、SQLServer和Oracle中的分层查询,mysql,sql-server,oracle,sql-server-2008,hierarchy,Mysql,Sql Server,Oracle,Sql Server 2008,Hierarchy,我试图在oracle/mysql/sqlserver中实现Connect By查询,以了解工作中的差异。试图了解它是如何工作的。我有一张简单的桌子,看起来像: empno ename mno 1 KS null 2 AB 2 3 BC 1 4 TR 3 5 QE 2 6 PL 3 7 LK 6 Oracle中的查询(工作) SQLServer中的查询(不工作): 如何在S
empno ename mno
1 KS null
2 AB 2
3 BC 1
4 TR 3
5 QE 2
6 PL 3
7 LK 6
Oracle中的查询(工作)
SQLServer中的查询(不工作):
如何在SqlServer中实现这一点?CTE到底是如何工作的?同样的查询在MySQL中会是什么样子
编辑
从Oracle查询返回的预期结果为:
EMPNO ENAME MNO
7 LK 6
6 PL 3
3 BC 1
1 KS (null)
您的加入条件是
m.mno=q.mno
,而我认为您需要m.empno=q.mno
“CTE到底是如何工作的”——您尝试过谷歌吗?递归CTE解释得很好。但是,用纯mysql的sql方言无法做到这一点
WITH q AS
(
SELECT *
FROM test
WHERE empno = 5
UNION ALL
SELECT m.*
FROM test m
JOIN q
ON m.mno = q.mno
)
SELECT *
FROM q
EMPNO ENAME MNO
7 LK 6
6 PL 3
3 BC 1
1 KS (null)