SELECT DISTINCT절을 사용하여 쿼리에서 반환된 결과 집합에서 중복 행을 제거 하는 방법
DISTINCT절은 SELECT결과 집합에서 중복 행을 제거하기 위해 문 에서 사용됩니다 .
DISTINCT절은 중복의 각 그룹에 대해 하나 개의 행을 유지합니다.
SELECT
DISTINCT column1, column2
FROM
table_name;
- column1및 column2열의 값 조합 이 중복 평가에 사용됩니다.
DISTINCT ON (expression) 다음 구문을 사용하여 각 중복 그룹의 "첫 번째" 행을 유지하는 기능을 제공
SELECT
DISTINCT ON (column1) column_alias,
column2
FROM
table_name
ORDER BY
column1,
column2;
- SELECT명령문 에서 반환되는 행의 순서 는 지정되지 않으므로 각 복제 그룹의 "첫 번째" 행도 지정되지 않습니다.
- 결과 집합을 예측 가능하게 만들기 위해 항상 ORDER BY와 함께 절을 사용하는 것이 좋습니다.
SELECT DISTINCT 예제
CREATE TABLE distinct_demo (
id serial NOT NULL PRIMARY KEY,
bcolor VARCHAR,
fcolor VARCHAR
);
INSERT INTO distinct_demo (bcolor, fcolor)
VALUES
('red', 'red'),
('red', 'red'),
('red', NULL),
(NULL, 'red'),
('red', 'green'),
('red', 'blue'),
('green', 'red'),
('green', 'blue'),
('green', 'green'),
('blue', 'red'),
('blue', 'green'),
('blue', 'blue');
SELECT
id,
bcolor,
fcolor
FROM
distinct_demo ;
1) PostgreSQL DISTINCT1열
SELECT
DISTINCT bcolor
FROM
distinct_demo
ORDER BY
bcolor;
- bcolor는 테이블에서 열의 고유 값을 선택합니다.
- SELECT를 사용하여 결과 집합을 알파벳순으로 정렬합니다.(ORDER BY)
2) PostgreSQL DISTINCT다중 열
-- DISTINCT여러 열 에서 절 을 사용하는 방법
SELECT
DISTINCT bcolor,
fcolor
FROM
distinct_demo
ORDER BY
bcolor,
fcolor;
- bcolor와 fcolor를 모두 지정했기 때문에 Postgre의 SELECT DISTINCT는 행의 고유성 평가를 위해 두 개를 결합했습니다.
- DISTINCT가 두 열에 모두 적용되었기 때문에 하나의 행이 제거가 되었습니다.
3) PostgreSQL DISTINCT ON
-- bcolor와 fcolor로 정렬한 다음 중복 그룹에 대해 반환된 결과 집합의 첫 번째 행을 유지
SELECT
DISTINCT ON (bcolor) bcolor,
fcolor
FROM
distinct_demo
ORDER BY
bcolor,
fcolor;
반응형
'SW ENGINEERING > Postgres' 카테고리의 다른 글
[PostgreSQL] BASIC - LIMIT (0) | 2021.09.01 |
---|---|
[PostgreSQL] BASIC - WHERE (0) | 2021.09.01 |
[PostgreSQL] BASIC - ORDER BY (0) | 2021.09.01 |
[PostgreSQL] BASIC - Column_alias (0) | 2021.09.01 |
[PostgreSQL] BASIC - SELECT (0) | 2021.09.01 |
최근댓글