본문 바로가기
언어/SQL

[MariaDB] 중복, NULL, 유효하지 않은 고객 제거하는 쿼리

by 코딩맛집 2024. 2. 1.

1. 중복 제거 쿼리

SELECT CUST_ID, COUNT(CUST_ID) AS CNT, '중복' AS REASON
FROM C_CUST_ADD_ITEMP
WHERE CUSTG_ID = {CUSTG_ID}
GROUP BY CUST_ID
HAVING COUNT(CUST_ID)>1

 

 

2. NULL 제거 쿼리

SELECT CUST_ID, COUNT(CUST_ID) AS CNT, 'NULL'
FROM C_CUST_ADD_ITEMP
WHERE CUSTG_ID = {CUSTG_ID} AND (CUST_ID = '' OR CUSTG_ID IS NULL)

 

3. TG_CUST_BHCRD_DD 테이블에 존재하지 않는 CUST_ID를 C_CUST_ADD_ITEMP 테이블에서 제거하는 쿼리

SELECT CUST_ID, COUNT(CUST_ID) AS CNT, '유효X'
   FROM C_CUST_ADD_ITEMP A
 WHERE CUSTG_ID = {CUSTG_ID} 
       AND NOT EXISTS (
           SELECT 1 FROM dsdmt.TG_CUST_BHCRD_DD B where A.CUST_ID = B.CUST_ID
       )
 GROUP BY CUST_ID;

 

 

+MariaDB에서 테이블 별칭을 사용할 때,

DELETE FROM 문에서 테이블 별칭을 지정할 수 없다. 대신에 직접 테이블 이름을 사용해야한다.

DELETE FROM C_CUST_ADD_ITEMP
WHERE CUSTG_ID = {CUSTG_ID}
  AND NOT EXISTS (
    SELECT 1
    FROM dsdmt.TG_CUST_BHCRD_DD B
    WHERE C_CUST_ADD_ITEMP.CUST_ID = B.CUST_ID
  );