MySQL의쿼리는 중복 데이터를 어떻게 처리합니까?중복 데이터 문을 제거하는 필터
MySQL의 중복 데이터 처리
일부 MySQL 데이터 테이블에는 중복 레코드가 있을 수 있습니다.어떤 경우에는 중복 데이터의 존재를 허용하지만 때로는 이러한 중복 데이터를 삭제해야 할 수도 있습니다.
이 장에서는 데이터 테이블의 중복 데이터를 방지하는 방법과 데이터 테이블의 중복 데이터를 삭제하는 방법을 소개합니다.
테이블의 중복 데이터 방지
MySQL 데이터 테이블의 지정된 필드를 다음과 같이 설정할 수 있습니다. 기본 키 또는 UNIQUE(고유) 데이터의 고유성을 보장하기 위한 인덱스입니다.
예를 들어 보겠습니다. 아래 테이블에는 인덱스와 기본 키가 없으므로 테이블에서 여러 중복 레코드를 허용합니다.
CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) );
테이블에서 first_name과 last_name 필드를 설정하고자 하는 경우 데이터가 반복될 수 없으며, 데이터의 고유성을 설정하는 이중 기본 키 모드를 설정할 수 있습니다. 이중 기본 키를 설정하면 해당 키의 기본값이 기본값입니다. NULL일 수 없지만 NOT NULL로 설정할 수 있습니다.다음과 같이:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) );
고유 인덱스를 설정하면 중복 데이터를 삽입할 때 SQL 문이 성공적으로 실행되지 않고 오류가 발생합니다.
INSERT IGNORE INTO와 INSERT INTO의 차이점은 INSERT IGNORE는 데이터베이스에 이미 존재하는 데이터를 무시한다는 것입니다.데이터베이스에 데이터가 없으면 새 데이터를 삽입하고 데이터가 있으면 이 데이터를 건너뜁니다.이러한 방식으로 데이터베이스에 있는 기존 데이터를 보존할 수 있으며, 그 공백에 데이터를 삽입하는 목적을 달성할 수 있습니다.
다음 예에서는 오류 없이 데이터 테이블에 중복 데이터를 삽입하지 않고 실행되는 INSERT IGNORE INTO를 사용합니다.
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 1 row affected (0.00 sec) mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 0 rows affected (0.00 sec)
INSERT IGNORE INTO 데이터를 삽입할 때 레코드의 고유성을 설정한 후 중복 데이터를 삽입하면 오류가 반환되지 않고 경고만 반환됩니다.그리고 REPLACE INTO into 기본 또는 고유 레코드가 있으면 먼저 삭제됩니다.새 레코드를 삽입합니다.
데이터의 고유성을 설정하는 또 다른 방법은 다음과 같이 UNIQUE 인덱스를 추가하는 것입니다.
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) );
통계 중복 데이터
아래에서 테이블에 있는 first_name 및 last_name의 중복 레코드 수를 계산합니다.
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1;
위의 쿼리 문은 person_tbl 테이블의 중복 레코드 수를 반환합니다.일반적으로 중복 값을 쿼리하려면 다음을 수행합니다.
- 가능한 중복 값이 포함된 열을 확인합니다.
- 열 선택 목록에서 COUNT(*)를 사용하여 해당 열을 나열합니다.
- GROUP BY 절에 나열된 열입니다.
- HAVING 절은 1보다 큰 반복 횟수를 설정합니다.
중복 데이터 필터링
고유한 데이터를 읽어야 하는 경우 SELECT 문에서 DISTINCT 키워드를 사용하여 중복 데이터를 필터링할 수 있습니다.
mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl;
GROUP BY를 사용하여 테이블에서 고유한 데이터를 읽을 수도 있습니다.
mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name);
데이터 중복 제거
데이터 테이블에서 중복 데이터를 삭제하려면 다음 SQL 문을 사용할 수 있습니다.
mysql> CREATE TABLE tmp SELECT last_name, first_name, sex -> FROM person_tbl; -> GROUP BY (last_name, first_name, sex); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl;
물론 데이터 테이블에 INDEX(인덱스)와 PRIMAY KEY(기본 키)를 추가하여 테이블의 중복 레코드를 삭제할 수도 있습니다.아래와 같은 방법:
mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name);
희망 첸 웨이량 블로그( https://www.chenweiliang.com/ ) 공유 "MySQL은 중복 데이터를 어떻게 쿼리하고 처리합니까?필터링 및 중복 제거 문'이 도움이 될 것입니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-499.html
최신 업데이트를 받으려면 Chen Weiliang 블로그의 Telegram 채널에 오신 것을 환영합니다!
📚 이 가이드에는 엄청난 가치가 담겨 있습니다. 🌟이것은 흔치 않은 기회입니다. 놓치지 마세요! ⏰⌛💨
당신이 원한다면 공유하고 좋아하십시오!
당신의 공유와 좋아요는 우리의 지속적인 동기 부여입니다!