DB

[DB] SQL - JOIN에 사용되는 조건절(USING, ON)에 대해 알아보자.

planting grass 2025. 3. 31. 16:10
728x90

조건절이란?

조건절 = 조건을 명시하는 구문

SQL에서 조건절은 여러 곳에서 사용된다.

위치 예시 설명
WHERE WHERE age > 20 행 필터링 (조건에 맞는 행만 조회)
HAVING HAVING COUNT(*) > 1 그룹핑된 결과에 조건 적용
ON ON A.id = B.a_id JOIN 시 두 테이블을 연결하는 조건
CASE WHEN WHEN score >= 90 THEN 'A' 조건에 따라 다른 결과 출력

이 중 이번에는 JOIN에만 사용되는 ONUSING에 대해 알아보도록 하자.

SQL에서 JOIN을 사용할 때, 두 테이블을 어떤 기준으로 연결할지 지정하는 조건문이다.

SELECT 문에서 JOIN 바로 뒤에 붙어 조인 기준 컬럼을 명시해준다.

조건절을 왜 사용하는가?

JOIN의 경우데이터를 합치는것이 아닌, 연관된 행끼리 결합해야 유의미한 결과가 나온다.

즉, 이 두 행이 연결될 수 있는 기준을 알려주는것이 바로 조건절이다.

사용 예시

사용 예시를 위한 테이블은 아래와 같은 정보를 담고있다.

  • 회원 테이블
member_id name
1 Alice
2 Bob
3 Carol
  • 주문 테이블
order_id member_id amount
101 1 300
102 2 150
103 2 200
104 4 400

ON

  • 가장 일반적이게 사용한다.
  • 두 테이블의 컬럼이 다른 이름이더라도 조인이 가능하다.
SELECT m.name, o.amount
FROM member m
JOIN orders o
ON m.member_id = o.member_id;
  • 결과
name amount
Alice 300
Bob 150
Bob 200

USING

  • 두 테이블에 동일한 컬럼명이 존재할 때만 사용이 가능하다.
  • 결과는 한 번만 컬럼이 출력되기 때문에 중복을 제거한다.
SELECT name, amount
FROM member
JOIN orders USING (member_id);
  • 결과
name amount
Alice 300
Bob 150
Bob 200

내용을 보면 USING의 상위호환이 ON이란것을 알 수 있다.

실제로 USING이 하지 못하는 일을 ON은 할 수 있기 때문에 어지간하면 ON을 사용하는것을 권장한다.

728x90