코딩헤딩

MariaDB 데이터베이스[database, DB] EXISTS() / 수정하기 본문

데이터베이스

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