SQL

SQL 3주차. inner join, left join, union all

두캔두잇 2023. 3. 5. 17:50

정렬 :order by   ~~별: group by

Inner Join :: 
    select * from users u
                      inner join point_users p
                      on u.user_id = p.user_id

예제:)  네이버 이메일 사용하는 유저의 성씨별 주문건수 세어보기


select u.name, count(u.name) as count_name from orders o
inner join users u
on o.user_id = u.user_id 
where u.email like '%naver.com'
group by u.name


1. from orders o: orders 테이블 데이터 전체를 가져오고 o라는 별칭을 붙입니다.
2. inner join users u on o.user_id = u.user_id : users 테이블을 orders 테이블에 붙이는데, orders 테이블의 user_id와 동일한 user_id를 갖는 users 테이블 데이터를 붙입니다. (*users 테이블에 u라는 별칭을 붙입니다)
3. where u.email like '%naver.com': users 테이블 email 필드값이 naver.com으로 끝나는 값만 가져옵니다.
4. group by u.name: users 테이블의 name값이 같은 값들을 뭉쳐줍니다.
5. select u.name, count(u.name) as count_name : users 테이블의 name필드와 name 필드를 기준으로 뭉쳐진 갯수를 세어서 출력해줍니다.
                  

left join::
select * from users u
left join point_users pu on u.user_id = pu.user_id

같은 필드명이고 합치고 싶을때는 [union all ]
(
    필드명
 )
  union all
(
    필드명
 )