0
Как найти круги в таблице sql? , например, если это мой стол:SQL получить круги в таблице
From To
x y
y z
z x
Я хочу, чтобы получить x-> y-> z-> х
И с помощью SQL
Как найти круги в таблице sql? , например, если это мой стол:SQL получить круги в таблице
From To
x y
y z
z x
Я хочу, чтобы получить x-> y-> z-> х
И с помощью SQL
Вы можете использовать рекурсивные CTE, чтобы получить ваш шаблон. Попробуйте сценарий ниже и настройте его в соответствии с вашими потребностями.
create table table1(
[from] varchar(max),
[to] varchar(max)
);
insert into table1([From], [To])
values('x', 'y'),
('y', 'z'),
('z', 'x');
--select [From], [To]
--from table1
DECLARE @first_val char(1);
--find the first value
select top(1) @first_val = [From]
from table1;
--recursive cte
;with cte([From], [To]) as (
select [From] , [To]
from table1
where [From][email protected]_val
union all
select c.[From] +'->'+t.[From] , t.[To]
from cte c
join table1 t on t.[From] = c.[To]
where t.[From] != @first_val
)
select [From]+'->'+[To]
from cte
where [To][email protected]_val;
--drop table table1;
Возможный дубликат [Обнаружение циклических ссылок в SQL] (http://stackoverflow.com/questions/7540760/detecting-circular-references-in-sql) – Stavr00
Я не понимаю, что это такое? , Я хочу запрос как чистый sql-запрос – user3703910
Что вы попробовали? вы не можете ожидать, что мы напишем вам код :) –