본문으로 바로가기
반응형
JOIN을 활용하여 테이블을 연결할 때,
ONWHERE의 사용에는 차이가 있다.

 

ON에 있는 조건절은 테이블이 조인되기 전에 실행된다

WHERE에 있는 조건절은 테이블이 조인된 후에 실행된다

 

같은 조건이라도 ON, WHERE 어디에 들어가 있는지에 따라 연산 순서가 달라진다

 

ON 에 조건절 넣기
  • 테이블이 조인되기 전에 조건을 실행한다
  • 유저 + 구매 ON 상품타입='유아용품'
  • 유아용품만 구매이력에 포함되어 유저를 보여준다
  • 유아용품을 샀는지 안샀는지 유저를 확인할 수 있다
SELECT o.*, p.category, p.name
FROM data.orders o LEFT JOIN data.products p
ON o.product_id = p.product_id
AND p.category = 'Furniture'

 

WHERE 에 조건절 넣기
  • 테이블이 조인된 후에 조건을 실행한다
  • 유저 + 구매 WHERE 상품타입='유아용품'
  • 유아용품을 사지 않은 사람들은 모두 사라진다
  • 유아용품을 샀던 사람만 남게된다
SELECT o.*, p.category, p.name
FROM data.orders o LEFT JOIN data.products p
ON o.product_id = p.product_id
WHERE p.category = 'Furniture'

 

JOIN을 할 때는 원하는 결과를 미리 생각한 후 명령어를 사용한다

 

반응형