有没有办法检查输出中是否有循环?避免循环输出
实施例:
CREATE TABLE packages
(
request varchar(10),
depend varchar(10)
);
INSERT INTO packages
(request, depend)
VALUES
('R001', 'R990'),
('R001', 'R992'),
('R002', 'R991'),
('R002', 'R990'),
('R990', 'R001'),
('R010', 'R001'),
('R215', 'R001'),
('R990', 'R887'),
('R990', 'R886');
SELECT
request,
depend
FROM
(
SELECT request, depend FROM packages WHERE request = 'R001'
UNION ALL
SELECT request, depend FROM packages WHERE depend IN ('R001')
) as Report
的最终结果是:
request depend
1 R001 R990
2 R001 R992
3 R990 R001
4 R010 R001
5 R215 R001
线3是从第1行周期,因此第3行不应该在的结果。
预期的结果:
request depend
1 R001 R990
2 R001 R992
3 R010 R001
4 R215 R001
感谢。
可以 –
你必须使用[递归查询(HTTPS添加预期的结果://technet.microsoft.com/en-us/library/ms186243(v = sql.105).aspx) –
您是否只考虑大小为1的循环?或者可以是更大的周期? –