[Mysql] 중복된 값 INSERT 허용하지않기

행복한 콩🌳·2023년 2월 24일
0

SQL

목록 보기
25/31

MySql에서 값을 넣을 때 중복된 값 허용하지 않기 위해 노력한 것들 기록

1. INSERT IGNORE
2. INSERT ... ON DUPLICATE KEY UPDATE
3. Subqueries with EXISTS or NOT EXISTS

1. INSERT IGNORE

중복된 데이터 값이 있으면 삽입 무시
MySQL TUTORIAL

INSERT IGNORE INTO table(column_list)
VALUES( value_list),
      ( value_list),
      ...

2. INSERT ... ON DUPLICATE KEY UPDATE

중복 데이터가 발생하면, 업데이트할 항목 지정 가능
[MySQL 공식 문서]

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE t1 SET c=c+1 WHERE a=1;

3. Subqueries with EXISTS or NOT EXISTS

[MySQL 공식 문서]

SELECT DISTINCT store_type FROM stores
  WHERE NOT EXISTS (SELECT * FROM cities_stores
                    WHERE cities_stores.store_type = stores.store_type);
  • 이 때 첫 번째 SELECT에 () 넣지 않기!!
INSERT INTO User (id, password)
SELECT 'artiiicy', '1234' FROM DUAL
WHERE NOT EXISTS
(SELECT id, password FROM User
 WHERE id = 'artiiicy' AND password = '1234')
  • DUAL Table이란?
    실제 Table에 존재하지 않는 Data 혹은 임의의 계산 결과를 출력할 때 사용하는 임의의 Table
  • 코드 출처

3번으로 해결함
1번, 2번은 중복허용하지 않을 데이터를 unique key로 지정해줘야해서 못씀

profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글