[SQL] 단일 쿼리에서 여러 개의 CTE
SQL단일 쿼리에서 여러 개의 CTE
그것은 arel와 함께 단일 쿼리에서 여러 열팽창 계수를 결합 할 수 있습니까? 이 같은 GET 결과에 대한 방법을 찾고 있어요 :
WITH 'cte1' AS (
...
),
WITH RECURSIVE 'cte2' AS (
...
),
WITH 'cte3' AS (
...
)
SELECT ... FROM 'cte3' WHERE ...
당신이 볼 수 있듯이, 나는 하나의 재귀 CTE와 두 개의 비 재귀 있습니다.
해결법
-
==============================
1.상단에 한 번 함께 핵심 단어를 사용합니다. 당신의 공통 테이블 식 (CTE)의 당신이 모든 CTE를 재귀 경우에도 한 번 또한 상단에있는 키워드 RECURSIVE를 추가해야합니다 (rCTE) 재귀 경우 :
상단에 한 번 함께 핵심 단어를 사용합니다. 당신의 공통 테이블 식 (CTE)의 당신이 모든 CTE를 재귀 경우에도 한 번 또한 상단에있는 키워드 RECURSIVE를 추가해야합니다 (rCTE) 재귀 경우 :
WITH RECURSIVE cte1 AS (...) -- can still be non-recursive , cte2 AS (SELECT ... UNION ALL SELECT ...) -- recursive term , cte3 AS (...) SELECT ... FROM cte3 WHERE ...
수동 :
굵게 강조 광산. 그리고, 더 많은 통찰력 :
다시 굵게 강조 광산. 재귀 키워드가 사용 된 경우 절을 WITH의 순서는 의미가 있음을 의미.
이 예에서 cte1 및 cte2 일반 SELECT 명령 자체 (NO 부수적 효과) 외부 SELECT에 언급되어 있지 않기 때문에 (cte3에서 참조하지 않는 한) BTW, 그들은 실행되지 않습니다.
-
==============================
2.예. 당신은 WITH를 반복하지 않습니다. 당신은 쉼표를 사용합니다 :
예. 당신은 WITH를 반복하지 않습니다. 당신은 쉼표를 사용합니다 :
WITH cte1 AS ( ... ), cte2 AS ( ... ), cte3 AS ( ... ) SELECT ... FROM 'cte3' WHERE ...
그리고 : 만 문자열 및 날짜 상수에 대한 작은 따옴표를 사용합니다. 열 별칭을 사용하지 마십시오. 그들은 어쨌든 CTE 이름을 사용할 수 없습니다.
from https://stackoverflow.com/questions/35248217/multiple-cte-in-single-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블의 한 열을 기준으로 중복 된 값을 제거 (0) | 2020.04.25 |
---|---|
[SQL] SQL 수 (*) 성능 (0) | 2020.04.25 |
[SQL] SQL 1 100에서 번호 목록을 생성하는 (0) | 2020.04.25 |
[SQL] SQL 서버에서 변수로 저장 프로 시저의 출력을 반환하는 방법 (0) | 2020.04.25 |
[SQL] PHP의 PDO 연 마 SQL 연결을 폐쇄해야 (0) | 2020.04.25 |