데이터베이스
MariaDB 데이터베이스[database, DB] EXISTS() / 수정하기
멈머이
2023. 11. 26. 04:23
728x90
* exist(조회)
- 조회결과가 1건이라도 있으며 True / 0건이면 False
- 서브쿼리를 적용(다중컬럼의 다중행 모두 가능)
=> 구매내역이 없는 회원만 조회하기
SELECT mem_id, mem_name
FROM member
WHERE NOT EXISTS(SELECT cart_member
FROM cart
WHERE cart_member = mem_id);
예제1)
- 2005년도 구매내역이 있는 회원에 대한
- 회원아이디, 회원이름, 마일리지 조회
- 단, 구매내역이 있는 회원의 총구매금액이 3천만원 이상인 데이터에 대해서만 조회
SELECT mem_id, mem_name, mem_mileage
FROM member
WHERE EXISTS(SELECT SUM(cart_qty*prod_sale)
FROM cart, prod
WHERE cart_member = mem_id
AND cart_prod = prod_id
AND cart_no LIKE '2005%'
HAVING SUM(cart_qty*prod_sale)>=30000000);
1명에 대한 결과만 처리하기 떄문에 group by를 쓰지 않아도 having절 사용할 수 있다.
어차피 1명이니까
* 수정하기
- 회원아이디가 'a001', 'b001'인 회원의 마일리지값을 2로 수정하기
SELECT mem_id, mem_mileage
FROM member
WHERE mem_id IN ('a001', 'b001');
* 항상 검증용 문구 만드는게 좋다 (검증용 select문)
UPDATE member
SET mem_mileage = 2
WHERE mem_id IN ('a001', 'b001');
* 수정하기
예제1)
- 구매내역이 있는 회원의 마일리지값을 3으로 일괄 수정하기
SELECT mem_id, mem_name, mem_mileage
FROM member
WHERE EXISTS(SELECT cart_member
FROM cart
WHERE cart_member = mem_id);
* 검증용 문구
UPDATE member
SET mem_mileage = 3
WHERE EXISTS(SELECT cart_member
FROM cart
WHERE cart_member = mem_id);
예제2)
- 2005년도 구매내역이 있는 회원에 대한
- 회원아이디, 회원이름, 마일리지 조회
- 단, 구매내역이 있는 회원의 총구매금액이 3천만원 이상인 데이터에 대해서만 조회
- 회원의 마일리지 값을 1000점으로 바꾸기
SELECT mem_id, mem_name, mem_mileage
FROM member
WHERE EXISTS(SELECT SUM(cart_qty*prod_sale)
FROM cart, prod
WHERE cart_member = mem_id
AND cart_prod = prod_id
AND cart_no LIKE '2005%'
HAVING SUM(cart_qty*prod_sale)>=30000000);
* 검증용 문구
UPDATE member
SET mem_mileage = 1000
WHERE EXISTS(SELECT SUM(cart_qty*prod_sale)
FROM cart, prod
WHERE cart_member = mem_id
AND cart_prod = prod_id
AND cart_no LIKE '2005%'
HAVING SUM(cart_qty*prod_sale)>=30000000);
728x90