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 2,641건 57 페이지
  • RSS
기술자료 목록
1521
일반   16801  2014-01-28 13:19  
1520
일반   17558  2014-01-27 13:37  
1519
PHP   14883  2014-01-26 21:07 ~ 2014-01-27 00:00  
1518
그누보드   14385  2014-01-23 21:16  
1517
Editor   19342  2014-01-21 04:09  
1516
킴스큐   45415  2014-01-17 16:59  
1515
Adobe   39250  2014-01-16 21:25  
1514
일반   14009  2014-01-15 22:21  
1513
Oracle   20506  2014-01-10 15:52  
1512
Oracle   16280  2014-01-09 06:01  
1511
Oracle   18746  2014-01-09 01:20  
1510
Oracle   45598  2014-01-09 01:13  
1509
Oracle   14171  2014-01-08 23:43  
1508
호스팅   13605  2014-01-06 13:49  
1507
그누보드   13098  2013-12-26 19:24  
1506
Oracle   25223  2013-12-25 23:39  
열람
Oracle   37202  2013-12-11 01:59  
1504
Oracle   41203  2013-09-25 15:08  
1503
Oracle   21202  2013-09-30 00:48  
1502
Oracle   24531  2013-10-06 04:24  

검색

해피정닷컴 정보

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

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