A) 말 "이름" 필드에 테이블 A, "이름" 값 다른 레코드 사이 동일 수 있습니다. 이제 해야 쿼리는 테이블의 레코드에는, "이름" 값 중복 항목;
선택 이름, 이름 하 여 그룹에서-는 count (*)는 count (*) > 1 같은 성별 또한 같은 경우 다음으로 큰. 선택 이름, 성, 이름, 성으로 그룹에서-는 count (*)는 count (*) > 1
2) 방법 1
@max 정수, @id 정수 선언 테이블 이름을 계산 하는 데 주요 분야 (*)에 의해 그룹에서 cur_rows 커서 선택 주요 분야, COUNT (*)에 대 한 로컬 선언 >; 1 오픈 Cur_rows @id에 cur_rows를 가져오는 @max @fetch_status @ 동안 = 0 시작 선택 @max = @max-1 SET ROWCOUNT @max 어디 메인 테이블 이름에서 삭제 필드 = @id @id에 cur_rows를 가져오는 @max 끝 Cur_rows를 닫습니다 ROWCOUNT 0 설정 방법 3
에 중복 기록, 하나는 완전히 중복 레코드, 즉, 모든 필드는 중복 레코드, 두 번째는 키 필드 중복 레코드 수, 이름 필드는 반복, 그리고 다른 분야는 반드시 반복 되지 않습니다 또는 반복 무시 될 수 있습니다. 1, 첫 번째 복제를 사용 하 여 해결 하기 위해 쉽게에 대 한 고유한 선택 * tablename에서 중복 레코드 집합 결과 얻을 수 있습니다. 테이블 (1) 중복 레코드에 중복 레코드를 삭제 하는 경우 삭제할 수 있습니다 그들을 다음과 같이 고유한 선택 * #tmp tablename로 드롭 테이블 TableName 선택 * #tmp에서 TableName로 드롭 테이블 #tmp 이 복제 테이블과 저조한 설계 된 고유 인덱스 열을 추가 하 여 해결할 수 있기 때문에 발생 합니다. 2. 이러한 유형의 반복을 다음과 같이 유지 하려면 중복 레코드에서 첫 번째 레코드 필요 중복 필드의 이름, 주소는 독특한 결과 두 분야에 대 한 집합 필요로 하는 가정 Autoid, 주체성 (int, 1, 1) 선택 * TableName에서 #tmp에 이름, autoid #tmp 그룹에서에서 #tmp2로 autoid 분 (autoid) 선택 선택 * #tmp에서 어디 autoid (선택 Autoid #tmp2에서)에서 마지막 선택 이름을 주소 결과 (하나 더 autoid 필드 SELECT 절이이 열을 생략 하도록 작성할 수 있습니다) 하지만 집합을 가져옵니다.
방법 4 쿼리 복사 선택한 *에서 tablename 어디 (에서 ID 테이블 이름에서 ID를 선택 그룹 ID 데 수 (ID) > 1 )
얼마 동안 SQL, (인덱싱되지) 테스트를 작성 하는 테이블에서 중복 레코드를 많이 발견. 나중에, 우리 몇 가지 방법으로 중복 레코드를 삭제 하는 요약, Oracle, 독특한 ROWID 통해 중복 레코드를 삭제할 수 있습니다에 구현 하기 위해 임시 테이블을 빌드할 수도 있습니다... 이 간단 하 고 실용적인 방법 중 몇 가지를 참조, (예를 들어 테이블 직원 걸릴) 당신과 함께 공유 하 고 싶습니다.
Sql > DESC 직원
이름 NULL 형식 ----------------------------------------- -------- ------------------
1, 테이블에서 중복 레코드 찾기, 중복 레코드가 단일 필드 (Peopleid) 선택에 의해 재판 된다 * 사람들이 어디 사람들 그룹에서에서 (선택 Peopleid에 Peopleid Peopleid에 의해 P는 수 (Peopleid) > 1) 2, 테이블에서 중복 레코드 삭제, 중복 레코드는 단일 필드 (Peopleid)에 근거, ROWID만을 떠나 최소한의 레코드 에서 삭제 어디 사람에 Peopleid (Peopleid에 의해 사람들이 그룹을 선택 Peopleid는 수 (Peopleid) > 1) rowID n 에 오티 (Peopleid 사람들이 그룹화 선택 분 (rowid)은 수 (Peopleid) > 1) 테이블 (여러 필드) 3, 찾기 중복 레코드 선택 * 이력서에서는 어디 (A.PEOPLEID,A.SEQ)에서 (선택 Peopleid, PEOPLEID, SEQ 이력서 그룹화 seq는 count (*) > 1) 4, 이력서에서 ROWID 최소한의 레코드만 떠나 삭제 중복 레코드 (여러 필드), 테이블에서 삭제 한 어디 (A.PEOPLEID,A.SEQ) (선택 Peopleid, V에서 seq에 Itae 그룹 BY PEOPLEID, SEQ는 count (*) > 1) 및 (선택 (rowid)에서 분 이력서 그룹 Peopleid, se에에서 rowID Q는 count (*) > 1)
5, ROWID 최소 레코드 선택 제외한 테이블 (여러 필드)에서 중복 레코드 찾기 * 이력서에서는 어디 (A.PEOPLEID,A.SEQ) (선택 Peopleid, V에서 seq에 Itae 그룹 BY PEOPLEID, SEQ는 count (*) > 1)
이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이
페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.
커뮤니티에서 표절 사례를 발견한 경우
info-contact@alibabacloud.com
으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.