최보름달
[SQL] USING, ON 조건절 본문
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 |