PostgreSQL CROSS JOIN절을 사용하여 조인된 테이블에서 행의 데카르트 곱을 생성하는 방법

 

CROSS JOIN절은 두 개 이상의 테이블에서 행의 직교만큼 생산 할 수 있습니다.

LEFT JOIN  또는 INNER JOIN 과 같은 다른 조인 절과 달리 CROSS JOIN절에는 조인 술어가 없습니다.

 

CROSS JOIN두 개의 테이블 T1과 T2 를 수행해야 한다고 가정합니다 .

T1에 n행이 있고 T2에 m행이 있으면 결과 집합에 nxm행  있습니다. 예를 들어 T1에는 1,000행이 있고 T2에는 1,000행이 있으며 결과 집합에는 1,000 x 1,000= 1,000,000행이 있습니다.

SELECT select_list
FROM T1
CROSS JOIN T2;

-- same

SELECT select_list
FROM T1, T2;

DROP TABLE IF EXISTS T1;
CREATE TABLE T1 (label CHAR(1) PRIMARY KEY);

DROP TABLE IF EXISTS T2;
CREATE TABLE T2 (score INT PRIMARY KEY);

INSERT INTO T1 (label)
VALUES
	('A'),
	('B');

INSERT INTO T2 (score)
VALUES
	(1),
	(2),
	(3);
-- T1과 T2를 조인
SELECT *
FROM T1
CROSS JOIN T2;

반응형

'SW ENGINEERING > Postgres' 카테고리의 다른 글

[PostgreSQL] BASIC - INNER JOIN  (0) 2021.09.02
[PostgreSQL] BASIC - NATURAL JOIN  (0) 2021.09.02
[PostgreSQL] BASIC - Table Aliases  (0) 2021.09.02
[PostgreSQL] BASIC - JOIN  (0) 2021.09.02
[PostgreSQL] BASIC - IS NULL  (0) 2021.09.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기