>  기사  >  데이터 베이스  >  mysql 중복 삭제

mysql 중복 삭제

王林
王林원래의
2023-05-12 11:29:079246검색

MySQL 데이터베이스에서는 중복된 데이터가 발생할 수 있습니다. 이러한 중복 데이터는 데이터베이스 성능과 안정성에 영향을 미칠 수 있습니다. 따라서 데이터베이스의 정확성과 무결성을 보장하기 위해 중복 데이터를 제거하는 방법을 배워야 합니다.

다음은 MySQL 데이터베이스에서 중복 데이터를 삭제하는 여러 가지 방법입니다.

방법 1: DISTINCT 키워드 사용

DISTINCT 키워드를 사용하면 쿼리 결과에서 중복 레코드를 삭제할 수 있습니다. 예를 들어, 다음 SQL 문을 사용하여 "customers"라는 테이블에서 고유한 도시를 선택할 수 있습니다.

SELECT DISTINCT city FROM customers;

이 쿼리는 고유한 도시 이름만 포함된 결과 집합을 반환합니다. 중복 레코드를 삭제하려면 DISTINCT 키워드를 DELETE 키워드로 바꾸세요.

DELETE FROM customers WHERE city IN (
  SELECT city FROM customers GROUP BY city HAVING COUNT(*) > 1
);

이 쿼리 문은 모든 도시에서 두 번 이상 발생하는 중복 레코드를 삭제하여 중복되지 않은 도시 이름이 포함된 테이블만 포함되도록 합니다. .

방법 2: GROUP BY 절 사용

GROUP BY 절을 사용하면 테이블의 데이터를 그룹화하여 각 그룹에 대해 개수 및 기타 집계 함수를 계산할 수 있습니다. GROUP BY 절과 HAVING 절을 사용하여 중복된 데이터를 제거할 수 있습니다. 예를 들어, 다음 SQL 문을 사용하여 "customers"라는 테이블에서 중복 레코드를 삭제할 수 있습니다.

DELETE FROM customers WHERE id NOT IN (
  SELECT MIN(id) FROM customers GROUP BY email
);

이 쿼리는 중복 이메일 주소가 있는 모든 레코드를 삭제하여 각 이메일 주소가 테이블에 한 번만 나타나도록 합니다.

방법 3: 임시 테이블 사용

중복 데이터를 제거하는 또 다른 방법은 임시 테이블을 사용하는 것입니다. 다음 SQL 문을 사용하여 고유한 레코드가 포함된 새 임시 테이블을 만들 수 있습니다.

CREATE TABLE temp_table SELECT DISTINCT * FROM customers;

다음으로 원본 테이블의 모든 레코드를 삭제하고 임시 테이블의 내용을 원본 테이블에 삽입할 수 있습니다.

DELETE FROM customers;
INSERT INTO customers SELECT * FROM temp_table;
DROP TABLE temp_table;

이 방법 두 개의 SQL 쿼리와 임시 테이블이 필요하므로 상대적으로 속도가 느리지만 원본 테이블의 데이터가 삭제되지 않도록 보장할 수 있습니다.

방법 4: UNIQUE 제약 조건 사용

UNIQUE 제약 조건은 테이블의 열에 고유성을 적용할 수 있습니다. 데이터를 삽입할 때 UNIQUE 제약 조건을 위반하면 오류가 반환됩니다. ALTER TABLE 문을 사용하여 테이블에 UNIQUE 제약 조건을 추가하면 중복 레코드가 삽입되지 않도록 할 수 있습니다.

예를 들어, 다음 SQL 문을 사용하여 "customers"라는 테이블의 "email" 열에 UNIQUE 제약 조건을 추가할 수 있습니다.

ALTER TABLE customers ADD UNIQUE (email);

이 SQL 문은 "email_UNIQUE"라는 인덱스를 추가하여 이메일 열의 고유성을 강제합니다. 안에 . 이메일 항목에 중복된 기록을 삽입하려고 하면 오류가 발생합니다.

중복 데이터를 제거하면 데이터베이스의 성능과 안정성을 크게 향상시킬 수 있습니다. MySQL 데이터베이스는 데이터 중복 제거를 위한 다양한 방법을 제공하며, 실제 상황에 따라 우리에게 적합한 방법을 선택할 수 있습니다.

위 내용은 mysql 중복 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.