sql 질문드려요
본문
상품일련번호가 각 테이블당 300백만개정도 되고 그런 테이블이 8개 이며
계속적으로 상품일련번호 테이블이 추가가 되는 상황입니다
추가되는 상품일련번호가 기존에 있는 일련번호들과 중복이 있다면 중복된일련번호를 제거하고
중복이 안되는 항목만 보고싶습니다
SELECT 200101.num1
FROM 200101 LEFT JOIN 200801 ON 200101.num1 = 200801.num1
WHERE (((200801.num1) Is Null));
현재는
1번 테이블 200101
2번 테이블 200201
3번 테이블 200301 식으로 되어있는 테이블들과 새로추가되는 테이블을 개별적으로 조인해서 비교를하고 있는데 이게 점점 많아지니까 힘들어져서요
새로추가되는 테이블과 기존에 있는 테이블들을 한번에 비교해서 기존에 있던 테이블들과 중복이 되는것들을 빼고 보려면 조건을 어떻게 걸어야 하는지 모르겠어서 질문드립니다
현재 200101 and 200201 and 200301 형식은 사용해 봤는데 이건
01,02,03에 모두 중복이 되는 애들만 제가하는거 저 중에 하나의 테이블에만 중복이 있으면 그값은 불러와졌습니다.
답변 1
select num1 from 200101 a
where not exists (select 'x' from 200201 b where b.num1 = a.num1)
and not exists (select 'x' from 200301 c where c.num1 = a.num1)
and not exists (select 'x' from 200401 d where d.num1 = a.num1)
and not exists (select 'x' from 200501 e where e.num1 = a.num1)
and not exists (select 'x' from 200601 f where f.num1 = a.num1)
and not exists (select 'x' from 200701 g where g.num1 = a.num1)
and not exists (select 'x' from 200801 h where h.num1 = a.num1)
와 같이 확인하면
기준테이블을 200101 로 놓고 그 이외의 테이블들에서 중복이 없는것만 추출해서 확인하는 방법입니다.
중요한건 기준테이블에 기준이 필요한것이죠
추가적으로 필요하면
exists 구문에 검색해보세요
!-->
답변을 작성하시기 전에 로그인 해주세요.