- 레코드 추가(생성)시 없으면 추가하고, 데이터가 이미 있으면 업데이트 하는 방법 ( 한방 쿼리 )
1. 칼럼을 UNIQUE로 설정
ALTER TABLE users ADD UNIQUE (email);
2. 쿼리
INSERT INTO users (email, name) VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = ? ;
//-----------------------------------------------------------
* INSERT IGNORE
- 이미 값이 있으면 추가하지 않기 ( = 없으면 추가하기 )
- IGNORE 를 사용하면 발생한 에러가 무시됨
INSERT IGNORE INTO `users` SET `email` = 'email1';
- 위 쿼리에서 `email` 칼럼이 에 UNIQUE 설정이 되있으면
이미 값이 있는 경우 에러가 발생하고 IGNORE를 통해 이 에러가 무시되면서
결과적으로 아무 동작도 하지 않게 된다
//--------------------
// 참고 REPLACE 명령
-- 주의! 무조건 기존 것을 지우고 새로 생성
REPLACE INTO users (email, name) VALUES (?, ?);
//-----------------------
// 참고
https://stackoverflow.com/questions/15383852/sql-if-exists-update-else-insert-into
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
https://dev.mysql.com/doc/refman/8.0/en/replace.html
'Code > Database (DB)' 카테고리의 다른 글
[sql] 레코드에 특정 값이 없으면 추가하기(중복 방지) (0) | 2020.09.12 |
---|---|
[MySql] 정규식 사용 방법 (0) | 2020.08.17 |
[SQL] 날짜별 레코드 카운트 구하기 (0) | 2020.07.31 |
[SQL] 테이블 자료 용량 확인 (0) | 2020.07.26 |
[SQL] 제한수 이상을 초과한 레코드 삭제 (한방 쿼리) (0) | 2020.07.26 |