두 테이블을 합쳐서 중복된 항목 제거하기

Back-End/Data Base 2020. 3. 21. 21:58
728x90
반응형

UNION 쿼리는 2개 이상의 테이블을 결합해서 결과값을 출력할 때 중복된 값을 제거할 수 있는 쿼리입니다.


아래와 같이 두가지의 테이블이 있다고 가정할때 OBJECTID컬럼의 C,D,F는 중복이 되므로 한번만 출력을 해야 합니다.







그럴경우에는 아래와 같이 쿼리를 작성후 실행하면 중복된 값이 없는 결과가 출력됩니다.


단, 두 테이블간에 컬럼의 갯수를 맞춰줘야 되므로, objecttable테이블에 null값이 들어간 groupid라는 컬럼을 새로 만들어서 사용했습니다.


1
2
3
4
5
6
SELECT GROUPID, OBJECTID, OBJECTNM, ORDERSEQ
    FROM (
      SELECT GROUPID, OBJECTID, OBJECTNM, ORDERSEQ FROM mappingtable WHERE GROUPID = 200
      UNION
      SELECT NULL AS GROUPID , OBJECTID, OBJECTNM, ORDERSEQ FROM objecttable WHERE OBJECTID NOT IN (SELECT OBJECTID FROM mappingtable WHERE GROUPID = 200)
      );
cs



UNION으로 합칠 테이블의 검색값중에 WHERE가 들어가 있는 경우에는 검색값이 두줄이상 되면 에러가 발생이 되기때문에 NOT IN을 추가로 넣었습니다.




728x90
반응형
: