본문 바로가기

DataBase/Mysql

[ mysql ] join using 과 on 차이(각각 어디에 적절한가?)

반응형

쿼리를 짤 때 join 이 필요할 경우에는 항상 on 을 사용했는데, 최근에 using 문법을 알게 되었다.

using 문법은 어떨 때 사용하는 것이 적절할까?

 

아래와 같이 테이블 2개가 있다고 가정해보자.

tb_user
tb_office

 

두 테이블을 INNER JOIN 해서 각 테이블의 정보를 조회하는 쿼리와 결과는 다음과 같다.

-- on 사용
SELECT u.*, o.*
FROM tb_user u
INNER JOIN tb_office o 
ON u.user_no = o.user_no;

-- using 사용
SELECT u.*, o.*
FROM tb_user u
INNER JOIN tb_office o 
USING (user_no);

 

두 쿼리는 동일한 결과

 

ON 절에서 각 테이블의 키를 연결하여 조회할 수도 있고,

USING 뒤에 두 테이블을 연결하는 키를 명시하여 조회할 수도 있다.

 

여기에서 확인할 수 있듯이, USING도 JOIN 할 때 사용되는 문법임을 확인할 수 있다.

단, USING 을 사용할 경우에는 연결하려는 테이블 간의 키에 해당하는 컬럼명이 일치해야 한다는 것이다.

또한 OUTER JOIN 시에 주의해야할 점도 있다.

 

 

반응형

 

바로 ON 뒤에 추가적으로 조건을 붙일 경우이다. USING 은 뒤에 추가적으로 AND 조건을 붙일 수 없다.

두 테이블을 LEFT JOIN 해서 각 테이블의 정보를 조회하는 쿼리와 결과는 다음과 같다.

 

-- ON 사용
SELECT u.*, o.*
FROM tb_user u
LEFT JOIN tb_office o 
ON u.user_no = o.user_no AND o.dept = '웹팀';

-- USING 사용
SELECT u.*, o.*
FROM tb_user u
LEFT JOIN tb_office o 
USING (user_no)
WHERE o.dept = '웹팀';

 

ON 사용 결과
USING 사용 결과

 

조건에 따라 조회 결과가 달라지는 것을 확인할 수 있다. 따라서 USING 은 INNER JOIN 경우에 권장된다.

반응형