1. 면접 중에 문제를 겪었는데, 즉 id와 name 두 필드로 테이블을 작성하고, 중복된 이름이 있는 모든 데이터를 조회한 뒤, 다음 항목을 나열하는 것입니다:
2. 모든 데이터를 조회하여 그룹화한 후, 중복 데이터의 반복 횟수에 대한 쿼리 데이터는 아래에 나열됩니다:
3. 다음은 다른 레코드의 결과를 보기 위한 것이며, 이제 다음과 같은 목록이 나열되었습니다: 중복 레코드를 쿼리하고 삭제하는 방법들의 완전한 목록
1. 테이블에서 중복된 중복 레코드를 찾고, 중복 레코드는 단일 필드(peopleId)를 기준으로 판단됩니다.
2. 테이블에서 중복된 중복 레코드를 삭제하면, 중복 레코드는 단일 필드(peopleId)를 기준으로 판단되어 가장 작은 로이드를 가진 레코드만 남게 됩니다
3. 테이블에서 중복된 중복 레코드(여러 필드) 찾기
4. 테이블에서 중복된 중복 레코드(여러 필드)를 삭제하고, 가장 작은 로이드를 가진 레코드만 남깁니다
5. 테이블에서 중복된 중복 레코드(여러 필드)를 찾고, 가장 낮은 rowid를 가진 레코드를 포함하지 않는 경우를 찾는다.
(2)
예를 들어 표 A에는 "name" 필드가 있습니다. 그리고 "이름" 값은 서로 다른 레코드 간에 같을 수 있습니다. 이제 테이블 내 레코드 간에 중복된 "name" 값이 있는 항목을 쿼리해야 합니다;
성별도 동일하다면, 다음과 같습니다:
(셋)
방법 1
방법 2 "중복 레코드"는 중복 레코드에 대해 두 가지 의미가 있는데, 하나는 완전 중복 레코드, 즉 모든 필드가 중복된 레코드이고, 다른 하나는 핵심 필드의 중복 부분이 있는 레코드로, 예를 들어 이름 필드가 중복된 경우는 있지만 다른 필드는 반드시 중복되지 않거나 모든 중복은 무시할 수 있습니다.
1. 첫 번째 반복 유형은 비교적 쉽게 풀고 사용할 수 있습니다
중복 기록이 없는 결과 세트를 얻을 수 있습니다.
만약 테이블이 중복 레코드를 삭제해야 한다면(중복 레코드 1개만 유지됨),
삭제는 다음과 같습니다
이 중복은 부실한 테이블 설계 때문에 발생하며, 고유한 인덱스 열을 추가함으로써 해결할 수 있습니다.
2. 이러한 중복 문제는 보통 중복 레코드의 첫 번째 레코드를 유지해야 하며, 연산 방법은 다음과 같습니다: Name과 Address에 중복 필드가 있다고 가정할 때, 이 두 필드의 고유 결과 집합이 필요합니다
마지막 선택은 반복되지 않는 Name과 Address 결과 집합을 얻지만(실제 작성 시 select 절에 추가할 수 있는 추가 autoID 필드가 있습니다)
(4)
쿼리가 중복됩니다
|