JOIN 중복제거 와 조인 (distinct, rowid, cnt) > 기술자료 | 해피정닷컴

JOIN 중복제거 와 조인 (distinct, rowid, cnt) > 기술자료

본문 바로가기

사이트 내 전체검색

JOIN 중복제거 와 조인 (distinct, rowid, cnt) > 기술자료

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

페이지 정보


본문

[ 방법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 36건 1 페이지
  • RSS
기술자료 목록
36
Oracle   4879  2021-12-08 18:49 ~ 2021-12-08 19:30  
35
Oracle   5090  2021-12-02 08:59 ~ 2021-12-02 14:59  
34
Oracle   18667  2017-04-27 01:54  
33
Oracle   15225  2017-04-01 23:05  
32
Oracle   35676  2016-02-03 21:19  
31
Oracle   28388  2016-02-03 20:40 ~ 2016-02-16 00:00  
30
Oracle   18941  2016-01-22 14:19  
29
Oracle   13946  2015-02-26 23:13  
28
Oracle   20502  2014-01-10 15:52  
27
Oracle   16275  2014-01-09 06:01  
26
Oracle   18729  2014-01-09 01:20  
25
Oracle   45593  2014-01-09 01:13  
24
Oracle   14166  2014-01-08 23:43  
23
Oracle   25218  2013-12-25 23:39  
열람
Oracle   37192  2013-12-11 01:59  
21
Oracle   41192  2013-09-25 15:08  
20
Oracle   21192  2013-09-30 00:48  
19
Oracle   24523  2013-10-06 04:24  
18
Oracle   15971  2013-10-07 06:40  
17
Oracle   16370  2013-10-06 05:45  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.