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에만 사용되는 ON
과 USING
에 대해 알아보도록 하자.
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