tablefunc모듈 포함 테이블을 반환하는 다양한 기능 (즉, 여러 행). 이러한 기능은 그 자체로 그리고 다중 반환 된 C 함수를 작성하는 방법의 예 줄.
표 F-31.TableFunc기능
기능 | 반환 | 설명 |
---|---|---|
normal_rand (int numvals,
float8 평균, float8 stddev) |
setof float8 | 정규 분포 무작위 세트를 생성합니다 값 |
crosstab (사설 토토 사이트
SQL) |
기록 설정 | 생산"피벗 테이블"행 이름 포함n값 열, 여기서nrowtype에 의해 결정됩니다 호출 쿼리에 지정 |
Crosstabn(사설 토토 사이트 SQL) |
setof table_crosstab_n | 생산"피벗 테이블"행 이름 포함n값 열.Crosstab2 , Crosstab3 및Crosstab4 사전 정의되었지만 가능합니다
추가 생성Crosstabn 설명 된 기능
아래에 |
Crosstab (Text Source_sql,
사설 토토 사이트 카테고리 _sql) |
Setof Record | 생산"피벗 테이블"두 번째 쿼리에 의해 지정된 값 열 |
Crosstab (Text SQL, int
N) |
Setof Record |
쓸모없는 버전 |
Connectby (사설 토토 사이트 relname, 사설 토토 사이트
keyid_fld, 사설 토토 사이트 parent_keyid_fld [, text orderby_fld],
Text start_with, int max_depth [, text branch_delim
]) |
Setof Record | 계층 적 트리의 표현을 생성합니다 구조 |
normal_rand
normal_rand (int numvals, float8 평균, float8 stddev) setof float8을 반환합니다.
normal_rand
세트를 생성합니다
정규 분포 임의 값 (가우시안
분포).
numvals는 값 수입니다 함수에서 반환 될 예정입니다.평균는 정규 분포의 평균입니다 가치와stddev입니다 값의 정규 분포의 표준 편차.
예를 들어이 호출은 평균으로 1000 값을 요청합니다. 5 및 표준 편차 3 :
test =# select * from normal_rand (1000, 5, 3); normal_rand ------------------------ 1.56556322244898 9.10040991424657 5.36957140345079 -0.369151492880995 0.283600703686639 . . . 4.82992125404908 9.71308014517282 2.49639286969028 (1000 줄)
Crosstab (사설 토토 사이트)
Crosstab (Text SQL) crosstab (사설 토토 사이트 SQL, int n)
theCrosstab
함수는입니다
생산에 사용"피벗"디스플레이,
여기서 데이터는 다운이 아닌 페이지에 나열됩니다. 을 위한
예를 들어, 우리는와 같은 데이터가있을 수 있습니다.
ROW1 VAL11 ROW1 VAL12 ROW1 VAL13 ... ROW2 VAL21 ROW2 VAL22 ROW2 VAL23 ...
우리가 표시하고 싶은
ROW1 VAL11 VAL12 VAL13 ... ROW2 VAL21 VAL22 VAL23 ... ...
theCrosstab
함수 가져옵니다
원시 데이터를 생성하는 SQL 쿼리 인 사설 토토 사이트 매개 변수
첫 번째 방식으로 서식을 작성하고 형식화 된 테이블을 생성합니다.
두 번째 방법.
theSQL매개 변수는 SQL입니다 소스 데이터 세트를 생성하는 명령문. 이것 진술은 하나를 반환해야합니다row_name열, 하나카테고리열, 1value열.n는 쓸모없는 매개 변수입니다 출력 값 열의 수와 일치해야했지만 이제는 호출 쿼리에 의해 결정됩니다).
예를 들어, 제공된 쿼리는 세트를 생성 할 수 있습니다 다음과 같은 것 :
ROW_NAME CAT 값 ----------+-------+------- ROW1 CAT1 VAL1 ROW1 CAT2 VAL2 ROW1 CAT3 VAL3 ROW1 CAT4 VAL4 ROW2 CAT1 VAL5 ROW2 CAT2 VAL6 ROW2 CAT3 VAL7 Row2 CAT4 VAL8
Crosstab
함수는입니다
반환으로 선언Setof Record출력 열의 실제 이름과 유형을 정의해야합니다.
에서From호출 조항select명령문, 예 :
선택 *에서 Crosstab ( '...')에서 CT (row_name 사설 토토 사이트, 카테고리 _1 사설 토토 사이트, Category_2 Text);로 선택하십시오.
이 예제는 다음과 같은 세트를 생성합니다.
<== 값 열 == row_name 카테고리 _1 카테고리 _2 ---------+-----------+------------ ROW1 VAL1 VAL2 Row2 Val5 Val6
theFrom절을 정의해야합니다 하나로 출력row_name열 (SQL의 첫 번째 결과 열과 동일한 데이터 유형 중 쿼리) 다음 Nvalue열 (세 번째 결과 열과 동일한 데이터 유형의 모든 것 SQL 쿼리). 많은 출력 값을 설정할 수 있습니다 원하는대로 열. 출력 열의 이름이 상승했습니다 당신에게.
theCrosstab
함수
연속 입력 그룹마다 하나의 출력 행을 생성합니다.
같은 행row_name값. 출력을 채 웁니다value열, 왼쪽에서 오른쪽으로value이 행의 필드. 있다면
출력보다 그룹의 행이 적습니다value열, 추가 출력 열
널로 채워져 있습니다. 더 많은 행이 있다면 추가
입력 행이 건너 뜁니다.
실제로 SQL 쿼리는 항상 지정해야합니다17999_18013입력 행이 있는지 확인합니다
적절하게 주문, 즉 동일한 값row_name함께 모여 있습니다
행 내에서 올바르게 주문했습니다. 주석Crosstab
그 자체는주의를 기울이지 않습니다
쿼리 결과의 두 번째 열에; 그것은 단지 거기에 있습니다
세 번째 열이있는 순서를 통제하기 위해
값은 페이지에 나타납니다.
여기에 완전한 예가 있습니다 :
테이블 CT 작성 (ID Serial, Rowid 사설 토토 사이트, 속성 사설 토토 사이트, 값 사설 토토 사이트); CT (rowid, 속성, 값) 값 ( 'test1', 'att1', 'val1')에 삽입; CT (rowid, 속성, 값) 값 ( 'test1', 'att2', 'val2')에 삽입; CT (rowid, 속성, 값) 값 ( 'test1', 'att3', 'val3')에 삽입; CT (rowid, 속성, 값) 값 ( 'test1', 'att4', 'val4')에 삽입; CT (rowid, 속성, 값) 값 ( 'test2', 'att1', 'val5')에 삽입; CT (rowid, 속성, 값) 값 ( 'test2', 'att2', 'val6')에 삽입; CT (rowid, 속성, 값) 값 ( 'test2', 'att3', 'val7')에 삽입; CT (rowid, 속성, 값) 값 ( 'test2', 'att4', 'val8')에 삽입; 선택하다 * Crosstab에서 ( 'Rowid, 속성, 값을 선택하십시오 CT에서 여기서 속성 = ''att2 ''또는 attribute = ''att3 '' 1,2 '로 주문 CT (row_name 사설 토토 사이트, 카테고리 _1 사설 토토 사이트, 카테고리_2 사설 토토 사이트, Category_3 사설 토토 사이트); row_name | 카테고리 _1 | 카테고리 _2 | 카테고리 _3 -----------+------------+------------+------------ test1 | Val2 | val3 | test2 | Val6 | val7 | (2 줄)
당신은 항상 a를 쓰지 않아도됩니다.From출력 열을 정의하려는 조항 원하는 CrosStab 함수 설정 출력 행 유형은 정의에 연결되었습니다. 이것은 설명됩니다 다음 섹션에서. 또 다른 가능성은 필수의From관점에서 조항 정의.
Crosstabn(사설 토토 사이트)
Crosstabn(사설 토토 사이트 SQL)
theCrosstabn
함수는 방법의 예입니다
일반을위한 사용자 정의 포장지 설정Crosstab
기능을 수행하지 않도록 기능
호출에 열 이름과 유형을 쓰기select쿼리. 그만큼탁자모듈 포함Crosstab2
, Crosstab3
및Crosstab4
정의
유형 생성 tablefunc_crosstab_n as ( row_name 사설 토토 사이트, 카테고리 _1 사설 토토 사이트, 카테고리 _2 사설 토토 사이트, . . . 카테고리_n 사설 토토 사이트 );
따라서 이러한 함수는 입력 할 때 직접 사용할 수 있습니다.
쿼리 생산row_name및value유형의 열사설 토토 사이트, 그리고 2, 3 또는 4 개의 출력 값을 원합니다.
열. 다른 모든면에서 그들은 설명대로 정확하게 행동합니다
장군을 위해 위Crosstab
기능.
예를 들어, 이전 섹션에 제공된 예입니다 또한로 작동합니다.
선택 * Crosstab3에서 ( 'Rowid, 속성, 값을 선택하십시오 CT에서 여기서 속성 = ''att2 ''또는 attribute = ''att3 '' 주문 1,2 ');
이 기능은 주로 예시를 위해 제공됩니다
목적. 자신만의 반환 유형 및 기능을 만들 수 있습니다
기본에 따라crosstab ()
함수. 두 가지 방법이 있습니다
그렇게하십시오 :
원하는 출력을 설명하는 복합 유형을 만듭니다
설치의 예와 유사한 열
스크립트. 그런 다음 고유 한 기능 이름을 정의하여 하나를 수락합니다사설 토토 사이트매개 변수 및 반환setof your_type_name그러나 링크
같은 기본에Crosstab
C 함수. 예를 들어, if
소스 데이터는의 행 이름을 생성합니다.사설 토토 사이트및 값float8, 그리고 당신은 5 개의 값 열을 원합니다 :
생성 유형 my_crosstab_float8_5_cols as ( my_row_name 사설 토토 사이트, my_category_1 float8, my_category_2 float8, my_category_3 float8, my_category_4 float8, my_category_5 float8 ); 기능 작성 또는 교체 Crosstab_float8_5_cols (사설 토토 사이트) my_crosstab_float8_5_cols를 반환합니다 '$ libdir/tablefunc', 'Crosstab'Language C 안정적인 엄격;
useout정의 할 매개 변수 반환 유형은 암시 적으로. 같은 예도 할 수도 있습니다 이런 식으로 끝나십시오 :
함수 생성 또는 교체 Crosstab_float8_5_cols (사설 토토 사이트로, my_row_name 사설 토토 사이트를 끄고 out my_category_1 float8, out my_category_2 float8, out my_category_3 float8, out my_category_4 float8, out my_category_5 float8) Setof 레코드를 반환합니다 '$ libdir/tablefunc', 'Crosstab'Language C 안정적인 엄격;
crosstab (사설 토토 사이트,
사설 토토 사이트)
crosstab (사설 토토 사이트 source_sql, text category_sql)
단일 파라미터 형태의 주요 제한Crosstab
는 모든 것을 취급한다는 것입니다
그룹의 값은 각 값을 첫 번째 값에 삽입합니다.
사용 가능한 열. 값 열이 해당하는 경우
특정 카테고리의 데이터에 대해, 일부 그룹은
일부 카테고리에 대한 데이터가 있으므로 잘 작동하지 않습니다.
2 파라미터 형태의Crosstab
이 케이스를 제공하여 처리합니다
출력에 해당하는 범주의 명시 적 목록
열.
source_sql는 SQL 문입니다 이는 소스 데이터 세트를 생성합니다. 이 진술은해야합니다 반환row_name열, 하나카테고리열, 1value열. 또한 가질 수도 있습니다 하나 이상의"추가"열. 그만큼row_name열이 먼저 있어야합니다. 그만큼카테고리및value열은 마지막 두 개 여야합니다 그 순서대로 열. 사이의 모든 열row_name및카테고리"추가". 그만큼"추가"열은 동일 할 것으로 예상됩니다 동일 한 모든 행의 경우row_namevalue.
예를 들어source_sql다음과 같은 세트 생산 :
select row_name, extr. row_name extra_col cat 값 ----------+------------+-----+------- ROW1 Extra1 CAT1 VAL1 ROW1 Extra1 CAT2 VAL2 ROW1 Extra1 CAT4 VAL4 ROW2 Extra2 CAT1 VAL5 Row2 Extra2 CAT2 VAL6 ROW2 Extra2 CAT3 VAL7 Row2 Extra2 CAT4 VAL8
Category_SQL는 SQL 문입니다 카테고리 세트를 생성합니다. 이 진술은해야합니다 하나의 열만 리턴합니다. 적어도 하나의 행을 생산해야합니다 오류가 생성됩니다. 또한 생산해서는 안됩니다 중복 값 또는 오류가 생성됩니다.Category_SQL
foo 주문에서 1 씩 고유 한 고양이를 선택하십시오. 고양이 ------- CAT1 cat2 cat3 CAT4
theCrosstab
함수는입니다
반환으로 선언Setof Record출력 열의 실제 이름과 유형을 정의해야합니다.
에서From호출 조항select진술, 예 :
선택 * From Crosstab ( '...', '...') CT (row_name 사설 토토 사이트, 추가 사설 토토 사이트, CAT1 사설 토토 사이트, CAT2 사설 토토 사이트, CAT3 사설 토토 사이트, CAT4 사설 토토 사이트);로
이것은 다음과 같은 결과를 낳습니다.
<== 값 열 == Row_name 추가 Cat1 Cat2 Cat3 Cat4 ---------+-------+------+------+------+------ ROW1 Extra1 VAL1 VAL2 VAL4 Row2 Extra2 VAL5 VAL6 VAL7 VAL8
theFrom절을 정의해야합니다 적절한 데이터 유형의 적절한 수의 출력 열. 만약에n열의 열source_sqlQuery의 결과, the 첫 번째n-2 중 일치해야합니다 첫 번째n-2 출력 열. 나머지 출력 열에는 유형이 있어야합니다 의 마지막 열source_sqlQuery의 결과, 그리고 그중만큼 많은 것과 정확히 많은 것이 있어야합니다. 에 행이 있습니다.Category_SQL쿼리 결과.
theCrosstab
함수
연속 입력 그룹마다 하나의 출력 행을 생성합니다.
같은 행row_name값. 출력row_name컬럼과 모든"추가"열,
그룹의 첫 번째 행에서 복사됩니다. 출력value열이 채워져 있습니다
그만큼value행에서 필드
일치하는카테고리값.
행 인 경우카테고리그렇지 않습니다
의 모든 출력과 일치Category_SQL쿼리, ITSvalue무시됩니다. 출력 열
일치하는 범주는
그룹은 널로 채워져 있습니다.
실제로source_sql쿼리는 항상 지정해야합니다주문 by 1동일 한 값을 확인하려면row_name함께 모입니다. 하지만, 그룹 내에서 카테고리를 주문하는 것은 중요하지 않습니다. 또한의 순서가 확실합니다.Category_SQL쿼리 출력 지정된 출력 열 순서와 일치합니다.
다음은 다음과 같은 두 가지 예입니다.
테이블 판매 생성 (Year Int, Month Int, Qty int); 판매 값에 삽입 (2007, 1, 1000); 판매 가치에 삽입 (2007, 2, 1500); 판매 값에 삽입 (2007, 7, 500); 판매 가치에 삽입 (2007, 11, 1500); 판매 값에 삽입 (2007, 12, 2000); 판매 값에 삽입 (2008, 1, 1000); Crosstab에서 *를 선택하십시오 ( '선택 연도, 월, 영업 주문에서 1 ~ 1', 1 ', 'generate_series (1,12) m에서 m을 선택하십시오' ) 처럼 ( int, "Jan"int, "Feb"int, "mar"int, "apr"int, "5 월"int, "Jun"int, "7 월"int, "8 월"int, "Sep"int, "OCT"int, "11 월"int, "12 월"int ); 해 | Jan | 2 월 | 3 월 | 4 월 | 5 월 | 6 월 | 7 월 | 8 월 | 9 월 | 10 월 | 11 월 | 12 월 ------+------+------+-----+-----+-----+-----+-----+-----+-----+------+------- 2007 | 1000 | 1500 | | | | | 500 | | | | 1500 | 2000 2008 | 1000 | | | | | | | | | | | (2 줄)
테이블 CTH 작성 (RowId Text, Rowdt Timestamp, 속성 사설 토토 사이트, val 사설 토토 사이트); CTH 값에 삽입 ( 'test1', '01 2003 년 3 월 1 일', '온도', '42'); CTH 값에 삽입 ( 'test1', '01 2003 년 3 월 1 일', 'test_result', 'pass'); CTH 값에 삽입 ( 'test1', '01 2003 년 3 월 1 일', '볼트', '2.6987'); CTH 값에 삽입 ( 'test2', '02 2003 년 3 월 2 일', '온도', '53'); CTH 값에 삽입 ( 'test2', '2003 년 3 월 2 일', 'test_result', 'fail'); CTH 값에 삽입 ( 'test2', '02 2003 년 3 월 2 일', 'test_startDate', '01 2003 년 3 월 1 일'); Cth 값에 삽입 ( 'test2', '02 2003 년 3 월 2 일', '볼트', '3.1234'); Crosstab에서 *를 선택하십시오 ( 'select rowid, rowdt, attribute, val wrom cth order x 1', 'Cth Order에서 1 x 1 씩 고유 한 속성을 선택하십시오' )) 처럼 ( rowid 사설 토토 사이트, Rowdt 타임 스탬프, 온도 int4, test_result 사설 토토 사이트, test_startdate timestamp, 볼트 플로트 8 ); Rowid | Rowdt | 온도 | test_result | test_startdate | 볼트 -------+-------------------------------------------------------------------------------------------------- test1 | 2003 년 3 월 1 일 00:00:00 | 42 | 패스 | | 2.6987 test2 | 2003 년 3 월 02 일 00:00:00 | 53 | 실패 | 2003 년 3 월 1 일 00:00:00 | 3.1234 (2 줄)
당신은 피할 필요가 없도록 사전 정의 된 함수를 만들 수 있습니다
각 쿼리에서 결과 열 이름과 유형을 기록하십시오.
이전 섹션의 예를 참조하십시오. 근본적인 c
이 형태의 기능Crosstab
이름이Crosstab_hash.
Connectby
Connectby (사설 토토 사이트 relname, 사설 토토 사이트 keyid_fld, text parent_keyid_fld [, text orderby_fld], text start_with, int max_depth [, text branch_delim])
theConnectby
함수
에 저장된 계층 적 데이터의 표시를 생성합니다.
테이블. 테이블에는 독특한 핵심 필드가 있어야합니다
행을 참조하는 줄과 부모 키 필드를 식별합니다
각 행의 부모 (있는 경우).Connectby
하위 트리를 표시 할 수 있습니다
어떤 줄에서 내림차순.
표 F-32.Connectby
매개 변수
매개 변수 | 설명 |
---|---|
Relname | 소스 관계의 이름 |
keyid_fld | 키 필드의 이름 |
parent_keyid_fld | 부모 키 필드의 이름 |
Orderby_fld | 형제 자매를 주문할 필드 이름 (선택 과목) |
start_with | 시작할 행의 키 값 |
max_depth | 최대 깊이로 내려 오거나 0에 대해 0. 무제한 깊이 |
BRANCE_DELIM | 지점 출력으로 키를 분리하려면 문자열 (선택 과목) |
키 및 부모 키 필드는 데이터 유형 일 수 있지만 그들은 같은 유형이어야합니다.start_with값은 사설 토토 사이트로 입력해야합니다 키 필드의 유형에 관계없이 문자열.
theConnectby
함수는입니다
반환으로 선언Setof Record출력 열의 실제 이름과 유형을 정의해야합니다.
에서From호출 조항select진술, 예 :
선택 * From Connectby ( 'Connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')))) as t (keyid text, parent_keyid 사설 토토 사이트, 레벨 int, 분기 사설 토토 사이트, pos int);
처음 두 출력 열은 현재에 사용됩니다. Row의 열쇠와 부모 Row의 열쇠; 그들은 유형과 일치해야합니다 테이블의 키 필드의. 세 번째 출력 열은입니다 나무의 깊이와 유형이어야합니다Integer. aBRANCE_DELIM매개 변수가 제공되었습니다 출력 열은 분기 디스플레이이며 유형이어야합니다사설 토토 사이트. 마지막으로,Orderby_fld매개 변수가 마지막으로 제공되었습니다 출력 열은 일련 번호이며 유형이어야합니다Integer.
the"Branch"출력 열 현재 행에 도달하기 위해 촬영 한 키의 경로를 보여줍니다. 그만큼 키는 지정된에 의해 구분됩니다BRANCE_DELIM문자열. 지점 디스플레이가없는 경우 원한다, 둘 다 생략BRANCE_DELIM출력 열의 매개 변수 및 분기 열 목록.
같은 부모의 형제 자매의 질서가 중요, 포함Orderby_fld파라미터를 주문할 필드를 지정하는 매개 변수. 이것 필드는 정렬 가능한 데이터 유형 일 수 있습니다. 출력 열 목록에는 최종 정수 직렬 번호 열이 포함되어야합니다 그리고 만Orderby_fldIS 지정.
테이블 및 필드 이름을 나타내는 매개 변수는 다음과 같습니다
AS-는 SQL 쿼리에 as-Connectby
내부적으로 생성됩니다. 그러므로,
이름이 혼합 사례이거나 포함 된 경우 이중 인용문 포함
특수 문자. 스키마 자격을 갖추어야 할 수도 있습니다
테이블 이름.
큰 테이블에서는 성능이 좋지 않을 것입니다. 부모 키 필드의 색인
BRANCE_DELIM문자열은 어떤 키에 나타나지 않습니다
값, elseConnectby
5 월
무한 재검토 오류를 잘못보고합니다. ifBRANCE_DELIM제공되지 않습니다
기본값~재귀 탐지 목적.
여기 예입니다.
테이블 작성 Connectby_tree (keyid 사설 토토 사이트, parent_keyid 사설 토토 사이트, pos int); Connectby_tree 값에 삽입 ( 'Row1', Null, 0); Connectby_tree 값에 삽입 ( 'Row2', 'Row1', 0); Connectby_tree 값에 삽입 ( 'Row3', 'Row1', 0); Connectby_tree 값에 삽입 ( 'Row4', 'Row2', 1); Connectby_tree 값에 삽입 ( 'Row5', 'Row2', 0); Connectby_tree 값에 삽입 ( 'Row6', 'Row4', 0); Connectby_tree 값에 삽입 ( 'Row7', 'Row3', 0); Connectby_tree 값에 삽입 ( 'Row8', 'Row6', 0); Connectby_tree 값에 삽입 ( 'Row9', 'Row5', 0); - Orderby_fld가없는 분기 (결과 순서는 보장되지 않음) 선택 *에서 Connectby ( 'Connectby_tree', 'keyid', 'parent_keyid', 'row2', 0, '~')를 선택하십시오. t (keyid text, parent_keyid 사설 토토 사이트, 레벨 int, branch 사설 토토 사이트); keyid | parent_keyid | 레벨 | 나뭇가지 -------+---------------+-------+-------------------- Row2 | | 0 | Row2 Row4 | Row2 | 1 | Row2 ~ Row4 Row6 | Row4 | 2 | Row2 ~ Row4 ~ Row6 Row8 | Row6 | 3 | row2 ~ row4 ~ row6 ~ row8 Row5 | Row2 | 1 | Row2 ~ Row5 Row9 | Row5 | 2 | Row2 ~ row5 ~ row9 (6 줄) - 분기 없음, Orderby_fld없이 (결과 순서는 보장되지 않습니다) 선택 *에서 Connectby ( 'Connectby_tree', 'keyid', 'parent_keyid', 'row2', 0) t (keyid text, parent_keyid 사설 토토 사이트, 레벨 int); keyid | parent_keyid | 수준 -------+-------------+------- Row2 | | 0 Row4 | Row2 | 1 Row6 | Row4 | 2 Row8 | Row6 | 3 Row5 | Row2 | 1 Row9 | Row5 | 2 (6 줄) - Orderby_fld와 함께 Branch (Row5가 Row4 앞에 오는 것을 주목하십시오) Connectby에서 *를 선택하십시오 ( 'Connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')) t (keyid text, parent_keyid 사설 토토 사이트, 레벨 int, 분기 사설 토토 사이트, pos int); keyid | parent_keyid | 레벨 | 지점 | POS -------+----------------------------------------------------- Row2 | | 0 | Row2 | 1 Row5 | Row2 | 1 | Row2 ~ Row5 | 2 Row9 | Row5 | 2 | Row2 ~ Row5 ~ Row9 | 3 Row4 | Row2 | 1 | Row2 ~ Row4 | 4 Row6 | Row4 | 2 | Row2 ~ Row4 ~ Row6 | 5 Row8 | Row6 | 3 | row2 ~ row4 ~ row6 ~ row8 | 6 (6 줄) - 지점없이, Orderby_fld (Row5가 Row4 전에 오는 것을 주목) 선택 *에서 Connectby ( 'Connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0) t (keyid text, parent_keyid 사설 토토 사이트, 레벨 int, pos int); keyid | parent_keyid | 레벨 | POS -------+-------------+-------+----- Row2 | | 0 | 1 Row5 | Row2 | 1 | 2 Row9 | Row5 | 2 | 3 Row4 | Row2 | 1 | 4 Row6 | Row4 | 2 | 5 Row8 | Row6 | 3 | 6 (6 줄)
Joe Conway