최보름달

[SQL] USING, ON 조건절 본문

문송한 회사생활/SQL 공부

[SQL] USING, ON 조건절

PieMoon 2020. 8. 15. 16:17

USING 조건절

FROM절의 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다. 

sql server에서는 지원하지 않는다. 

 

SELECT  *
FROM    DEPT JOIN DEPT_TEMP
USING   (DEPTNO) ;

USING 조건절에서도 테이블 이름이나 ALIAS, 접두사를 붙일 수 없다. 

 

ON 조건절

컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.

SELECT  E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM    EMP E JOIN DEPT D
ON      (E.DEPTNO = D.DEPTNO) ;  -- 괄호는 없어도 됨. (옵셔널)

 

WHERE 절과 혼용해서 사용할 수도 있다. 

SELECT  E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM    EMP E JOIN DEPT D
ON      (E.DEPTNO = D.DEPTNO) 
WHERE   E.DEPTNO = 30 ;

 

ON 조건절에 검색 조건을 사용할 수 있지만 (WHERE 기능과 같음), WHERE를 쓰는 것을 권장한다. 

SELECT  E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM    EMP E JOIN DEPT D
ON      (E.DEPTNO = D.DEPTNO 
AND      E.MGR = 7777) ;

-- 이것과 같은 결과다. 
SELECT  E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM    EMP E JOIN DEPT D
ON      (E.DEPTNO = D.DEPTNO)
WHERE   E.MGR = 7777 ; 

 

 

 

 

kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다. 

 

'문송한 회사생활 > SQL 공부' 카테고리의 다른 글

[SQL] OUTER JOIN (LEFT, RIGHT, FULL)  (0) 2020.08.15
[SQL] CROSS JOIN  (0) 2020.08.15
[SQL] INNER JOIN, NATURAL JOIN  (0) 2020.08.15
[SQL] FROM절의 JOIN  (0) 2020.08.15
[SQL] STANDARD SQL, 집합 연산자  (0) 2020.08.15