0
누군가 SQL에서 지시/지시를받은 적이없는 사람으로서 다음 질문이 어떻게 이루어져야했는지 들었습니다. 내가 듣기론, 이것과 같은 루프는 일을하는 아주 끔찍한 방법입니다.여기에 while 루프를 사용하지 않으려면 어떻게해야합니까?
나는이에서 내 쿼리 내에서 테이블을 만드는거야 :
이DECLARE @maxReleases int
SET @maxReleases = 100000
DECLARE @RootReleases table (ReleaseId int, RootReleaseId int)
DECLARE @ctr int
Set @ctr = 1
WHILE(@ctr <= @maxReleases)
BEGIN
WITH cte_Releases
(
ReleaseId,
Name,
ParentReleaseID
)
AS(
SELECT
ReleaseId,
Name,
ParentReleaseID
FROM Releases
Where ReleaseId = @ctr
UNION ALL
SELECT
R.ReleaseId,
R.Name,
R.ParentReleaseID
FROM Releases R
INNER JOIN cte_Releases ON cte_Releases.ParentReleaseID = R.ReleaseId
)
INSERT INTO @RootReleases
SELECT max(ReleaseId) as ReleaseId, min(ReleaseId) as RootReleaseId FROM cte_Releases
SET @ctr = @ctr + 1
END
이 코드의 목적은 자신의 가장 먼 부모 레코드 레코드를 연결하는 테이블을 구축하고, 테이블에 삽입하는 것입니다
가 참조 할 수 쿼리의 다른 부분.