종류 : UNION, UNION ALL, INTERSECT, MINUS
위와같은 ‘tbl_menu’ table이 있을 때, 예제를 작성해보자.
UNION
합집합을 해준다. 중복이 있을 시 제거해준다.
SELECT * from tbl_menu where category_code = 10
UNION
SELECT * from tbl_menu where menu_price < 9000;
UNION ALL
중복이 난 부분까지 모두 나타내준다.
SELECT * from tbl_menu where category_code = 10
UNION ALL
SELECT * from tbl_menu where menu_price < 9000;
INTERSECT
Maria DB에는 교집합 연산자가 없기 때문에, inner join이나 in을 이용해 비슷한 효과를 내주어야 한다.
- inner join
- 같은 테이블을 조인할 시에도 테이블 별명을 붙여서 헷갈리는 것을 방지해야한다.
select * from tbl_menu a
join (select *
from tbl_menu
where category_code = 10
) b on a.menu_code = b.menu_code
where a.menu_price < 9000;
- in
select * from tbl_menu a
where a.menu_price < 9000
and
a.category_code in (select *
from tbl_menu
where category_code = 10
);
MINUS
역시 MariaDB에서는 제공하지 않는 연산자이기 때문에 left join으로 구현해주어야 한다.
left join : 왼쪽 null 값도 표시해주는 join연산
select * from tbl_menu a
left join (select * from tbl_menu
where category_code = 10
) b on a.menu_code = b.menu_code
where a.menu_price < 9000
and b.menu_code IS NULL;
'Database' 카테고리의 다른 글
[MySQL] Timestamp와 Datetime중 어떤 타입을 사용해야 할까? (1) | 2025.04.01 |
---|---|
[Mariadb] FULL OUTER JOIN (0) | 2025.02.06 |
[DB] 제약조건 수정 ( primary key 추가/삭제/수정, foriegn key 추가/삭제/수정) (0) | 2025.02.04 |
[DB] ORDER BY 구문 활용 (0) | 2025.02.04 |
[DB] SELECT 구문 활용 (0) | 2025.02.04 |