PostgreSQL with 자구 귀속
2395 단어 PostgreSQL기초
1. 시계 만들기
postgres=# create table tb9(id serial primary key,name character varying, parentid integer);
CREATE TABLE
postgres=# \d tb9
Table "public.tb9"
Column | Type | Modifiers
----------+-------------------+--------------------------------------------------
id | integer | not null default nextval('tb9_id_seq'::regclass)
name | character varying |
parentid | integer |
Indexes:
"tb9_pkey" PRIMARY KEY, btree (id)
2. 테스트 데이터 삽입
postgres=# insert into tb9 values(generate_series(1,5),'john',0);
INSERT 0 5
postgres=# insert into tb9 values(6,'john1',1);
INSERT 0 1
postgres=# insert into tb9 values(7,'john2',1);
INSERT 0 1
postgres=# insert into tb9 values(8,'john11',6);
INSERT 0 1
postgres=# select * from tb9;
id | name | parentid
----+--------+----------
1 | john | 0
2 | john | 0
3 | john | 0
4 | john | 0
5 | john | 0
6 | john1 | 1
7 | john2 | 1
8 | john11 | 6
(8 rows)
3. with 자구
postgres=# with t as (select * from tb9 where parentid=1) select count(0) from t;
count
-------
2
(1 row)
postgres=# with t(a,b,c) as (select * from tb9 where parentid=1) select a,b,c from t;
a | b | c
---+-------+---
6 | john1 | 1
7 | john2 | 1
(2 rows)
4. 여러 개의 with 자구의 결합 사용
parentid=1의 기록된 모든 하위 기록
postgres=# with t1 as (select * from tb9),t2 as(select * from tb9 where parentid=1) select t1.* from t1,t2 where t2.id=t1.parentid;
id | name | parentid
----+--------+----------
8 | john11 | 6
(1 row)
5. 귀속
id가 1인 기록의 모든 하위 기록
postgres=# with recursive t as(select id,name,parentid from tb9 where id=1 union all select k.id,k.name,k.parentid from tb9 k,t where t.id=k.parentid) select * from t;
id | name | parentid
----+--------+----------
1 | john | 0
6 | john1 | 1
7 | john2 | 1
8 | john11 | 6
9 | john21 | 7
(5 rows)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redmine 데이터베이스를 MySQL에서 PostgreSQL로 마이그레이션 (보충)Redmine 의 Database 를 MySQL 로 운용하고 있었습니다만, MySQL 5.6 이상이나 MariaDB 에는 , , 이러한 티켓이 수년 동안 방치된 상황을 감안하여, PostgreSQL로 마이그레이션하기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.