>  기사  >  데이터 베이스  >  MySQL에서 중복 데이터를 제거하는 방법은 무엇입니까?

MySQL에서 중복 데이터를 제거하는 방법은 무엇입니까?

零下一度
零下一度원래의
2017-06-29 15:42:371395검색

이 글은 주로 MySQL에 대한 관련 정보를 소개합니다. 중복 데이터 인스턴스에 대한 자세한 설명이 필요한 친구는

MySQL 중복 데이터 인스턴스에 대한 자세한 설명

중복 레코드에 대한 두 가지 의미가 있습니다. 하나는 완전합니다. 중복 레코드, 즉 모든 필드가 반복되고, 두 번째는 일부 필드가 반복되는 레코드입니다. 첫 번째 유형의 중복은 비교적 쉽게 해결할 수 있습니다. 중복을 제거하려면 query 문에 Unique 키워드를 사용하면 됩니다. 이러한 중복이 발생하는 주된 이유는 테이블 디자인이 좋지 않기 때문입니다. 이는 기본 키나 고유한 index 열을 테이블에 추가하면 방지할 수 있습니다.


select distinct * from t;

두 번째 유형의 중복 문제는 일반적으로 중복 레코드 중 아무 레코드나 쿼리해야 합니다. 테이블 t에 id, name, address라는 세 개의 필드가 있다고 가정합니다. id는 기본 키이고 중복 필드는 이름과 주소입니다. 이 두 필드의 고유한 결과 집합을 가져오는 데 필요합니다.

-- Oracle, MySQL, 상관 하위 쿼리 사용


select * from t t1

 where t1.id =

 (select min(t2.id)

  from t t2

  where t1.name = t2.name and t1.address = t2.address);

-- Hive는 FROM 절에서 하위 쿼리 사용만 지원합니다. 하위 쿼리에는 이름이 있어야 하며 열은 고유해야 합니다


select t1.*

 from t t1,

   (select name, address, min(id) id from t group by name, address) t2

 where t1.id = t2.id;

-- 하이브의 row_number() 분석

함수


select t.id, t.name, t.address

 from (select id, name, address,

row_number() over (distribute by name, address sort by id) as rn 

     from t) t 

 where t.rn=1;
를 사용할 수도 있습니다.

위 내용은 MySQL에서 중복 데이터를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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