Я пытаюсь реализовать запрос Connect By в oracle/mysql/sqlserver, чтобы понять разницу в работе. Пытаюсь понять, как это работает. Итак, у меня есть простая таблица, которая выглядит так:
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)