Pay it Forward

[MYSQL] 중복 제거하고 Table에 Data 넣기 (Insert + NOT EXIST) 본문

DB/MYSQL

[MYSQL] 중복 제거하고 Table에 Data 넣기 (Insert + NOT EXIST)

minjoony 2020. 7. 7. 14:45
728x90

MYSQL에서  Insert 를 통해 Data를 넣는 과정에서

 

이미 Table에 존재하는 Data의 경우는 중복되는 것을 방지하기 위하여  Insert 를 방지하고 싶은 경우가 있습니다.

 

이러한 경우에는  Insert 문의  Where 절에  NOT EXIST 를 사용하여 구현할 수 있습니다.

 

INSERT INTO [Table 명] ('Col 1', 'Col 2')
SELECT '값 1', '값 2' FROM DUAL
WHERE NOT EXISTS
(SELECT 'Col 1', 'Col 2' FROM [Table 명]
 WHERE 'Col 1' = '값 1' AND 'Col 2' = '값 2')

이 SQL문은 넣고자 하는 Data를 이미 포함하지 않는, 즉 중복되지 않도록 하는 DUAL 이라는 임의의 Table을 통해 중복을 제거하여

 

Insert문을 실행하도록 합니다.

 

아래는 예시 SQL문입니다.

INSERT INTO User (id, password)
SELECT 'artiiicy', '1234' FROM DUAL
WHERE NOT EXISTS
(SELECT id, password FROM User
 WHERE id = 'artiiicy' AND password = '1234')

이는 User Table에 Data를 넣을 때 중복을 허용하지 않겠다는 SQL문이며 위는 id와 password가 artiiicy, 1234인 Data를 넣는 과정입니다.

 

DUAL Table 이란?

DUAL Table이란  실제 Table에 존재하지 않는 Data 혹은 임의의 계산 결과를 출력할 때 사용하는 임의의 Table입니다.

728x90
Comments