DataBase/PostgreSQL
[PostgreSQL] USING
개발하는 까꿍이
2022. 8. 1. 09:42
using은 join의 양쪽이 조인 열에 대해 동일한 이름을 사용하는 특정 상황에서 활용할 수 있는 양식이다.
예를 들어, T1과 T2를 USING(a, b)으로 조인하면 조인 조건은 on T1.a = T2.a and T1.b = T2.b가 된다.
예제 1
select * from unnest(array[1,2,3,4,5]) as t1(id)
inner join unnest(array[1,3,5]) as t2(id) using(id)
-- 동일한 쿼리문
select * from unnest(array[1,2,3,4,5]) as t1(id)
inner join unnest(array[1,3,5]) as t2(id) on t1.id = t2.id

예제 2
select * from unnest(array[1,2,3,4,5], array['A','B','C','D']) as t1(id, name)
inner join unnest(array[1,3,5], array['A','C','F']) as t2(id, name) using(id, name)
-- 동일한 쿼리문
select * from unnest(array[1,2,3,4,5]) as t1(id)
inner join unnest(array[1,3,5]) as t2(id) on t1.id = t2.id

JUST 내 생각
Table끼리 조인 시에는 USING이 좋은 방법이 아닐 수 있다고 생각한다. 만약, Table Column명이 변경될 경우 on T1.a = T2.id 이런 식으로 바꿔줘야하기 때문이다.
그러나 주어진 Table과 해당 쿼리문에서 만든 임시 테이블(?)을 사용할 때는 유용할 것 같다는 생각한다. 임시 테이블의 칼럼명을 Table 칼럼명에 맞추어주면 되기 때문이다.
참고