찾다
php教程PHP开发SQL은 테이블에서 모든 중복 레코드 데이터를 찾습니다.

1. 인터뷰 중에 id와 name이라는 두 개의 필드가 있는 테이블을 작성하고 이름이 반복되는 모든 데이터를 쿼리하는 문제가 발생했습니다.

SELECT * from xi a where (a.username) in  (SELECT username from xi group by username  having count(*) > 1)

2. 모든 데이터를 쿼리하고 그룹화한 후 쿼리한 데이터와 중복된 데이터의 반복 횟수는 다음과 같습니다.

SELECT count(username) as '重复次数',username from xi group by username  having count(*)>1 order by username desc

3. 다른 사람의 결과를 보려면 쿼리한 데이터가 아래에 나열됩니다. : 중복 레코드 조회 및 삭제 종합 방법

1. 테이블에서 중복 레코드를 찾습니다. 단일 필드(peopleId)를 기준으로 중복 레코드를 판단합니다.

SELECT * from people
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)

2. 테이블의 레코드가 중복됩니다. 단일 필드(peopleId)를 기준으로 판단되며 가장 작은 rowid가 있는 레코드만 남깁니다.

DELETE from people 
where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)

또한 MySQL에서 위의 SQL을 사용하면 오류가 보고됩니다. FROM 절에 업데이트할 대상 테이블 'XXX'를 지정할 수 없고, 테이블 수정 중에 동일한 테이블을 쿼리할 수 없으므로, 다음 명령문과 같이 테이블 데이터 수정 조건으로 쿼리 결과를 임시 테이블로 명명할 수 있다. 위의 오류를 방지하려면.

DELETE from user where user_id in(
    (SELECT user_id from 
        (SELECT c.* from cab_user c where c.extra_id in 
            (SELECT  a.extra_id  from user a group  by  a.extra_id having  count(a.extra_id) > 1) and c.user_id not in 
            (SELECT min(b.user_id) from  user b group by b.extra_id having count(b.extra_id )>1)
        ) d
    )
)

3. 테이블에서 중복된 레코드(여러 필드)를 찾습니다.

SELECT * from vitae a
where (a.peopleId,a.seq) in  (SELECT peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)

4. 테이블에서 중복된 레코드(여러 필드)를 삭제하고 다음이 포함된 레코드만 남깁니다. 가장 작은 rowid

delete from vitae a
where (a.peopleId,a.seq) in  (SELECT peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5. 조회 테이블의 중복된 레코드(여러 필드)는 가장 작은 rowid를 가진 레코드를 포함하지 않습니다

SELECT * from vitae a
where (a.peopleId,a.seq) in  (SELECT peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

(2)
예를 들어
테이블 A에 "name" 필드가 있고
서로 다른 레코드 간의 "name" 값이 동일할 수 있다고 가정해 보겠습니다.
이제 테이블에 있는 레코드 간의 차이점을 쿼리해야 합니다. , "이름" 값에 중복된 항목이 있습니다.

SELECT Name,Count(*) From A Group By Name Having Count(*) > 1

성별도 동일한 경우 결과는 다음과 같습니다.

SELECT Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

(3)
방법 1은 @max 정수, @id 정수를 선언하고 cur_rows 커서를 기본 필드 선택에 대해 로컬로 선언하고 테이블 이름에서 count(*)를 갖는 기본 필드별로 그룹화합니다. 1cur_rowsfetch cur_rows를 @id,@maxwhile @@fetch_status= 0beginselect @max = @max -1set rowcount @maxdelete from table name where main field = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0

방법 2 "중복 레코드"에는 중복 레코드의 두 가지 의미가 있습니다. 완전히 중복된 레코드, 즉 모든 필드가 두 번째로 반복되는 레코드, 이름 필드와 같은 일부 키 필드가 반복되고 다른 필드는 반복되지 않거나 무시될 수 있는 레코드입니다.

1. 첫 번째 유형의 중복은 해결하기가 더 쉽습니다. 테이블에서 중복 레코드를 삭제해야 하는 경우(중복 레코드 1개 유지) 다음과 같이 삭제할 수 있습니다. select Unique * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp 이 중복의 이유는 테이블이 디자인이 올바르지 않습니다. 이는 몇 주 안에 발생하며 고유 인덱스 열을 추가하면 해결될 수 있습니다.

2. 이러한 유형의 중복 문제는 일반적으로 중복 레코드 중 첫 번째 레코드를 유지해야 하며, 작업 방법은 다음과 같습니다. 이름과 주소가 중복되어 고유한 결과를 얻어야 합니다. 이 두 필드 집합은 autoID로 ID(int,1,1)를 선택하고, * into #Tmp from tableNameselect min(autoID)를 autoID로 #Tmp2 from #Tmp group by Name,autoIDselect * from #Tmp where autoID in(autoID 선택 from #tmp2) 마지막 select는 중복되지 않은 이름과 주소를 가진 결과 집합을 얻었습니다(단, 별도의 autoID 필드가 있습니다. 실제로 작성 시 select 절에서 이 열을 생략할 수 있습니다)

(4) 반복 쿼리

SELECT * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)


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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는