이유는 구현할 가치가있는 우선 순위 기능이라고 생각하지 않았기 때문입니다. Postgres does support bothUNION
및 UNION ALL
처럼 보입니다.
이 기능에 대한 강력한 사례가 있다면 Connect (또는 대체 할 URL이 무엇이든간에) 의견을 제공 할 수 있습니다.
후속 단계에서 이전 행에 추가 된 중복 행이 거의 언제나 무한 루프를 발생 시키거나 최대 재귀 제한을 초과하게되므로 중복을 방지하면 유용합니다. 코드가 UNION
등이 문서에서는 they are implemented in SQL Server 설명 
다음과 같이 시연 사용하는 경우
는 SQL Standards 꽤 몇 군데 있습니다. 그들은 "두포"처럼 아무것도하지 않습니다. 스택 스풀은 행이 삭제 될 때 행을 삭제하므로 나중에 행이 삭제 된 행의 사본인지 여부를 알 수 없습니다. UNION
을 지원하려면 다소 다른 접근 방식이 필요합니다.
그 사이에 TVF의 멀티 서술에서 동일한 결과를 얻을 수 있습니다.
는
UNION ALL
에
UNION
을 변경하고 무한 재귀에서 당신을 저장하지 않습니다 끝에
DISTINCT
를 추가 (
Postgres Fiddle)
WITH R
AS (SELECT 0 AS N
UNION
SELECT (N + 1)%10
FROM R)
SELECT N
FROM R
아래 바보 같은 예를 취합니다.
하지만 당신은 위의 중복을 폐기 IGNORE_DUP_KEY
을 사용
CREATE FUNCTION dbo.F()
RETURNS @R TABLE(n INT PRIMARY KEY WITH (IGNORE_DUP_KEY = ON))
AS
BEGIN
INSERT INTO @R
VALUES (0); --anchor
WHILE @@ROWCOUNT > 0
BEGIN
INSERT INTO @R
SELECT (N + 1)%10
FROM @R
END
RETURN
END
GO
SELECT *
FROM dbo.F()
으로이를 구현할 수 있습니다. 열 목록의 너비가 너무 커서 색인을 생성 할 수없는 경우 DISTINCT
및 NOT EXISTS
이 필요합니다. 또한 재귀의 최대 횟수를 설정하고 무한 루프를 피하는 매개 변수가 필요할 수도 있습니다.
우리는 당신이 의미하는 것을 얻지 못하기 때문에 약간의 코드를 볼 수 있습니까? – Sami
Downvoter 관심을 갖는 분? –
@Sami 재귀 적 CTE의 정의는 재귀 쿼리에 앵커 쿼리'UNION ALL'을 요구합니다. 왜 유니온이 아닌 유니온이 될 필요가 있는지 묻고 있는데 옵티마이 저가 이미 어떤 형태로하고 있다고 생각합니다. –