我正在尝试在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中的查询(正在运行)
SELECT empno, ename, mno
FROM test
START WITH ename = 'LK'
CONNECT BY empno = PRIOR mno;
SQLServer中的查询(不工作):
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
我如何在SqlServer中执行此操作? CTE如何正常工作?如何在MySQL中查询相同的查询?
Oracle查询返回的预期结果是:
EMPNO ENAME MNO
7 LK 6
6 PL 3
3 BC 1
1 KS (null)
答案 0 :(得分:1)
当我认为您需要m.mno = q.mno
时,您的加入条件为m.empno = q.mno
。