JOIN 중복제거 와 조인 (distinct, rowid, cnt) > 온라인강의

본문 바로가기
 
 
 
오늘 684
어제 1,481
최대 2,454
전체 3,205,406
비즈니스의 시작 비즈명함 ~ 가격, 품질, 배송 3가지 만족을 드리는 비즈명함 / 즉석명함 / 급행서비스 / 서울 전지역 수도권일부 3시간배송

온라인강좌 홈 > 온라인강좌 > 온라인강좌

Oracle | JOIN 중복제거 와 조인 (distinct, rowid, cnt)

페이지 정보

작성일2013-12-11 01:59 조회11,461회 댓글0건

본문

[ 방법1 ]

예제1 >
sql = "SELECT * FROM( "

sql = sql & " select * from( "

sql = sql & " select a.type,a.link_tab, b.title as title1, b.kwk, c.tik, d.para as imgpara,
sql = sql & " row_number() over (partition by a.article_seq order by a.article_a_no) cnt, a.ARTICLE_A_NO
 //요부분 이 as cnt하고 및에서 cnt="1"1로하면 중복없는조인
 // 하지만 문제는 다른테이블정보가 자세히보면 가득히 중복이라는거
 from aaa a, bbb b, ccc c
 where a.article_a_no= 'HDKJBO_2003_v7n1_001'
 and  a.article_seq = b.article_seq(+)
 and a.article_seq =c.article_seq(+)

 //그래서 조인을 여기서~ 그럼 완료
slq = sql &" ) b where b.cnt='1') WHERE ROWNUM >= 1 AND ROWNUM <= 20 "
//rownum 은 간단히처리~


예제2 >
select * from (select b.field4, row_number() over (partition by b.field1 order by b.field1) cnt, b.field1
from aaa a, bbb b where b.field1 = c.field1 and c.field2 = '"& idx &"') where cnt ='1' and rownum <= 100

예제3>
sql = sql &"select field4, field1, field3 from ( "
sql = sql &"Select rownum row_num, se.* FROM ( "
sql = sql &"select * from ( "
sql = sql &"select row_number() over(partition by b.field1 order by b.field1) cnt , b.field4, b.field1, b.field3 "
sql = sql &"from aaa a INNER JOIN bbb b ON a.field2=b.field1 where a.field5 = '462'  "
sql = sql &") where cnt ='1' "
sql = sql &") se "
sql = sql &") where row_num BETWEEN 1 AND 5"

[ 방법 2 ]

[ DISTINCT ]
     제시된 필드에 대한 중복체크 (n개 모두)
     고로...다수개의 필드중 하나의 필드에만 중복체크가 필요할때는 사용이 불가능하다.

    SELECT DISTINCT field1
       FROM table_name
     WHERE field1 = ''
ORDER BY field1


[ ROWID ]
     다수개의 필드중  단 하나의 필드에만 중복 체크를 하려할 경우

    SELECT  field1   -- 이넘의 중복건만 제거
                , field2
                , field3
       FROM table_name
     WHERE field1 = ''
         AND rowid in( select max(rowid) from table_name group by field1 )
ORDER BY field1


rowid는 데이터가 많을 경우 부하를 가져온다.
이때는 SUBSELECT를 사용한다.

select *
from tb_test
where reg_tm between start_tm and end_tm
and rowid in (select max(rowid) from tb_test group by field1)
// 이 구문은 rowid가 숫자일 경우에만 유효합니다.



관련자료
http://blog.naver.com/eoqufryghl/111357685
http://ky1004.blog.me/30039201009
http://blog.daum.net/mygunsan/1
http://eknote.tistory.com/901
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


목록

Total 32건 1 페이지
온라인강의 목록
번호 제목
32
31
30
29
Oracle [ClassASP] 연동하기 (write.2015-02-26)인기글  Hit.2955
28
27
Oracle 컬럼 추가와 디폴트값 (write.2014-01-09)인기글  Hit.4245
26
Oracle PK(primary key) 추가/삭제 (write.2014-01-09)인기글  Hit.4642
25
Oracle 에러 메세지 정리 (write.2014-01-09)인기글  Hit.11264
24
Oracle 테이블 복사/백업 (write.2014-01-08)인기글  Hit.3618
23
열람중
21
20
19
Oracle 조인및 서브쿼리 (write.2013-10-06)인기글  Hit.4702
18
Oracle VIEW 퀴리 생성 및 사용하기 (write.2013-10-07)인기글  Hit.3691
17
Oracle TOP 10개만 가져오는 쿼리문 (write.2013-10-06)인기글  Hit.3868
16
15
14
Oracle Dual 테이블, from dual 이란? (write.2013-11-07)인기글  Hit.3715
13
Oracle PK와 유니크 인덱스의 차이점 (write.2013-10-25)인기글  Hit.4796
12
11
10
Oracle 버퍼캐쉬 비우기 (write.2013-10-24)인기글  Hit.3612
9
Oracle LIKE 연산자 (write.2013-10-06)인기글  Hit.3055
8
Oracle Oracle Sql Develper 툴 설치하기 (update.2015-06-26)인기글  Hit.5725
게시물 검색
 
 
상호: 해피정닷컴 대표:정창용 사업자등록번호:119-05-36414 (08394) 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
전화: 070-7600-3500 팩스:02-865-3528 개인정보관리:정창용 mail@happyjung.com 에스크로확인
개인정보취급방침
COPYRIGHT 2001~2017 해피정닷컴. All rights reserved. 부가통신사업신고:서울체신청-1217 통신판매신고:2014-서울구로-0074
 
모바일 버전으로 보기