У меня есть таблица со следующей структурой
CREATE TABLE Source
(
[ID1] INT,
[ID2] INT
);
INSERT INTO Source ([ID1], [ID2])
VALUES (1, 2), (2, 3), (4, 5),
(2, 5), (6, 7)
Пример таблиц источника и результата:
Исходная таблица в основномхранит, какой идентификатор совпадает с каким другим идентификатором.Из диаграммы видно, что 1, 2, 3, 4, 5 идентичны.И 6, 7 идентичны.Мне нужен SQL-запрос для получения таблицы результатов со всеми совпадениями между идентификаторами.
Я нашел этот элемент на сайте - Рекурсивный запрос в SQL Server похож на мою задачу, но с другимрезультат.
Я пытался отредактировать код для моей задачи, но он не работает.«Оператор завершен. Максимальная рекурсия 100 была исчерпана до завершения оператора.»
;WITH CTE
AS
(
SELECT DISTINCT
M1.ID1,
M1.ID1 as ID2
FROM Source M1
LEFT JOIN Source M2
ON M1.ID1 = M2.ID2
WHERE M2.ID2 IS NULL
UNION ALL
SELECT
C.ID2,
M.ID1
FROM CTE C
JOIN Source M
ON C.ID1 = M.ID1
)
SELECT * FROM CTE ORDER BY ID1
Большое спасибо за помощь!