with작성 방법을 제공합니다CTEs는 다음을 생각할 수 있습니다with절 할 수 있습니다select, 삽입, 업데이트또는삭제; 그리고with절 자체는 1 차에 첨부됩니다select, 삽입, 업데이트,삭제.
기본 값selectinwith복잡한 내려야합니다
greal_sales as (
상단에 제품 당 총 판매량을 표시합니다with절의 정의Regional_salesandTOP_REGIONSRegional_salesTOP_REGIONS그리고의 출력TOP_REGIONS기본에서 사용됩니다select토토. 이 예는 그럴 수 있습니다with그러나 우리는 가지고 있습니다selects. 이것을 따르기가 조금 더 쉽습니다
선택 사항재귀수정 자with단순한 구문에서재귀, awith토토
재귀 t (n) as (
재귀의 일반적인 형태with토토는 항상입니다.비 수거 용어, 그 다음Union(또는Union All),10392_10406, 여기서만
재귀 토토 평가
비 수수 용어를 평가합니다. 을 위한Union(하지만연합), 중복 행을 버립니다. 남은 모든 것을 포함하십시오작업.
작업 테이블이 비어 있지 않는 한 반복
재귀 용어를 평가하고 대체합니다Union(하지만Union All), 중복 행을 폐기하십시오중간 표.
작업대의 내용을
참고 :엄밀히 말하면,이 과정은입니다재귀
위의 예에서 작업 테이블에는 단 하나가 있습니다.여기서절 등
재귀 토토는 일반적으로 처리하는 데 사용됩니다
재귀 포함 포함 _parts (sub_part, part, rotity) as (
재귀 토토로 작업 할 때Union대신Union All이것을 달성 할 수 있습니다그래프a 사용링크필드 :
recursive search_graph (id, link, data, depth) as (
이 토토는이면 루프됩니다.링크관계에는주기가 포함됩니다. 왜냐하면"깊이"출력, 그냥Union AlltoUnion루핑을 제거하지 않습니다. 대신에PATHand사이클루프가 발생하기 쉬운 토토 :
recursive search_graph (id, 링크, 데이터, 깊이, | g.id,, 사이클)
사이클을 방지하는 것 외에도 배열 값은 종종입니다"Path"특정 행에 도달하기 위해 촬영.
일반적인 경우 둘 이상의 필드가 필요한 경우f1andf2:
재귀 exeurn_graph (id, 링크, 데이터, 깊이, | 행 (G.F1, G.F2),, 사이클) as (
팁 :생략row ()하나의 필드 만 있어야하는 공동 케이스의 구문
팁 :재귀 토토 평가 알고리즘주문 by a "Path"열이 구성되었습니다
확실하지 않은 경우 토토 테스트를위한 유용한 요령Limit부모 토토에서. 예를 들어,이 토토는 영원히 루프됩니다Limit:
재귀 t (n) as (
이것은 작동하기 때문에PostgreSQL의 구현 만 평가합니다withwith토토
유용한 속성with토토with토토. 따라서 필요한 계산이 필요합니다with중복 작업을 피하기위한 토토. 또 다른with일반 하위 토토보다 토토. 그만큼with토토는 일반적으로 평가됩니다
위의 예제 만 표시withselect이지만 가능합니다삽입, 업데이트또는삭제. 각각의 경우 효과적으로 제공합니다
데이터 수정 문 (를 사용할 수 있습니다.삽입, 업데이트또는삭제) inwith. 이를 통해 여러 가지를 수행 할 수 있습니다
maze_rows as (
이 토토는 효과적으로 행을 움직입니다제품toProducts_Log. 그만큼삭제inwith삭제제품,반환절; 그리고 기본 토토Products_Log.
위의 예의 좋은 점은입니다.with조항이 첨부되어삽입, 서브가 아닙니다.select내에서삽입. 데이터 수정이기 때문에 필요합니다with최상위 성명서에 첨부 된 조항. 하지만,with가시성 규칙이 적용됩니다withsub의 명령문 출력select.
데이터 수정 문의with보통반환조항, AS반환절,not대상 테이블with부족반환조항은 다음을 형성합니다
t as (
이 예제는 테이블에서 모든 행을 제거합니다fooandbar. 그만큼bar.
데이터 수정 진술의 재귀 적 자기 참조는 다음과 같습니다with, 예 :
재귀 포함 포함 _parts (sub_part, part) as (
이 토토는 모든 직접 및 간접 하위 부위를 제거합니다.
데이터 수정 문의with정확히 한 번에 실행되며 항상 완료됩니다.selectinwith: 이전 섹션에서 언급 한 바와 같이,select만 운반됩니다
하위 진술의witharewith, 지정된 업데이트 순서스냅 샷(참조스포츠 토토 결과 : 문서 : 9.1 : 동시성 제어), 따라서"참조"서로의 영향에 미치는 영향반환데이터는 유일한 방법입니다with하위 진술 및 기본 토토. an
t as (
외부select업데이트
t as (
외부select
단일 문서에서 같은 행을 두 번 업데이트하려고합니다.with영향을 줄 수있는 하위 진술
현재, 데이터 수정의 대상으로 사용되는 모든 테이블witha또한규칙,대신확장되는 규칙