// mysql 데이터베이스에서 레코드 자료 추가시 중복 레코드 방지 방법
Prevent Sending Duplicate record
Best way to avoid duplicate entry into mysql database
https://stackoverflow.com/questions/2219786/best-way-to-avoid-duplicate-entry-into-mysql-database
- 유닉크 인덱스 키 설정
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
- 중복으로 INSERT 될때 무시(에러 발생 안함)
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
//-------------------------------------
- 참고) 중복시 특정 칼럼을 UPDATE
INSERT INTO thetable (pageid, name, somefield)
VALUES (1, "foo", "first")
ON DUPLICATE KEY UPDATE (somefield = 'first')
INSERT INTO thetable (pageid, name, somefield)
VALUES (1, "foo", "second")
ON DUPLICATE KEY UPDATE (somefield = 'second')
- 참고) 중복시 카운터 증가
INSERT INTO thetable (pageid, name)
VALUES (1, "foo"), (1, "foo")
ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
//-----------------------------------------------------------------------------
* 2개의 칼럼의 조합이 중복되지 않게 MySql DB 테이블 설정
ALTER TABLE `users` ADD UNIQUE `unique_index`(`email`, `user_id`);
- 유니크 칼럼 추가 가능
ALTER TABLE `users` ADD UNIQUE `unique_index2`(`nickname`);
- 유니크 설정 삭제
ALTER TABLE `users` DROP INDEX `unique_index2`;
//===================
* 중복된 값 조회
select users.*
from users join
(select email, user_id, count(*) as dup
from users
group by email, user_id
having dup > 1
) `tsum`
on users.email = tsum.email and users.user_id = tsum.user_id ;
//=================
// 참고
MySQL select records for duplicates using multiple columns
https://stackoverflow.com/questions/16324328/mysql-select-records-for-duplicates-using-multiple-columns
MySQL 중복데이터 관리방법 (INSERT IGNORE, ON DUPLICATE KEY UPDATE...)
https://umanking.github.io/2021/07/05/mysql-duplicate-record/
How To Avoid Inserting Duplicate Records in MySQL
https://ubiq.co/database-blog/how-to-avoid-inserting-duplicate-records-in-mysql/
'Code > Database (DB)' 카테고리의 다른 글
[MySql] mysql 사용 메모리 줄이기 (0) | 2019.09.23 |
---|---|
[MySql] 기본키값 전체를 증가 시키기 (ALTER TABLE 사용설명) (0) | 2019.09.10 |
mysql sql 명령 , 테이블변형 (alter table) (0) | 2019.08.14 |
리눅스에 mysql 5.7 설치 하기 (0) | 2019.04.12 |
MySql 시간대 한국으로 변경 (0) | 2019.04.01 |