Database

[DB] SET OPERATORS (MariaDB)

grove1212 2025. 2. 6. 13:59

 

 

종류 : 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;