날마다 새롭게 또 날마다 새롭게

[Oracle] select문 중복 제거 방법 - distinct, rowid 본문

프로그래밍/DB

[Oracle] select문 중복 제거 방법 - distinct, rowid

아무유 2013. 7. 31. 13:42

1. distinct

ex-1) SELECT (distinct) column_name from table_name;

SELECT문 다음에 distinct를 쓰게 되면 해당 column의 중복되는 행을 제거하게 된다.

distinct 다음에 column_name은 여러개가 올 수 있으며 다음과 같이 작성할 수 있다.


ex-2) SELECT distinct column_name_1 column_name_2 from table_name;

ex-2의 sql 구문을 실행하게 되면 column_name_1과 column_name_2가 중복되는 행을 제거하게 된다.

만일 SELECT를 사용하여 여러개의 column을 보여주고 하나의 column에서만 중복되는 행을 제거하고자 한다면 rowid를 사용해야 한다.


2. rowid

테이블에 있는 해당 row를 찾기 위해 사용되는 논리적인 정보를 말한다.

ex-1의 sql 구문을 rowid를 사용하면 다음과 같다.

ex-3) SELECT column_name from table_name where rowid in (select max(rowid) from table_name group by column_name);

해당 table의 column을 그룹으로 나누고 그룹에서 rowid가 가장 큰 값을 보여주는 명령으로 ex-1과 동일한 결과를 얻을 수 있다.


- rowid 출처 -

[1] http://sammisoft.net/mboard/mboard/mboard.asp?exe=view&board_id=pds&group_name=sammisoft&idx_num=155&page=10&category=0&search_category=&search_word=&order_c=strSubject&order_da=desc

[2] http://ggang-tong.tistory.com/entry/oraclerowid%EC%99%80-rownum%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95


- 중복 제거 sql 문 출처 -

[1] http://agreeable.tistory.com/71







Comments