Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

여러 열에 대한 MySQL 테이블의 중복을 확인하는 방법은 무엇입니까?

<시간/>

MySQL에서 중복 여부를 확인하기 위해 group by have 절을 사용할 수 있습니다. 구문은 다음과 같습니다.

선택 yourColumnName1,yourColumnName2,.......N,count(*)를 yourColumnName1,yourColumnName2have count(*)> 1에 의해 yourTableNamegroup의 anyVariableName으로 선택;

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> 테이블 생성 DuplicateDemo-> (-> StudentId int not null,-> StudentFirstName varchar(100),-> StudentLastName varchar(100),-> Primary Key(StudentId)-> );Query OK, 0 rows 영향(0.50초)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.

mysql> insert into DuplicateDemo values(1,'John','Smith');Query OK, 영향을 받는 1개 행(0.13초)mysql> insert into DuplicateDemo values(2,'Mike','Jones');Query OK, 영향을 받는 행 1개(0.28초)mysql> DuplicateDemo 값에 삽입(3,'David','Smith');쿼리 확인, 영향을 받는 행 1개(0.15초)mysql> DuplicateDemo 값에 삽입(4,'Carol', 'Taylor');쿼리 OK, 1행 영향(0.20초)mysql> DuplicateDemo 값에 삽입(5,'David','Smith');Query OK, 1행 영향(0.11초)mysql> DuplicateDemo 값에 삽입( 6,'John','Smith');쿼리 확인, 1행 영향(0.16초)mysql> DuplicateDemo 값에 삽입(7,'John','Taylor');쿼리 OK, 1행 영향(0.15초) 

select 문을 사용하여 테이블의 모든 레코드를 표시합니다.

쿼리는 다음과 같습니다 -

mysql> DuplicateDemo에서 *선택;

다음은 출력입니다.

+-----------+------------------+--------------- --+| 학생 ID | 학생이름 | 학생 성 |+-----------+------------------+---------------- -+| 1 | 존 | 스미스 || 2 | 마이크 | 존스 || 3 | 데이비드 | 스미스 || 4 | 캐롤 | 테일러 || 5 | 데이비드 | 스미스 || 6 | 존 | 스미스 || 7 | 존 | 테일러 |+-----------+------------------+---------------- -+7 행 세트(0.00초)

다음은 테이블에서 중복을 확인하는 쿼리입니다.

mysql> 카운트(*)> 1을 갖는 StudentFirstName,StudentLastName->별로 DuplicateDemo-> 그룹에서 총계로 StudentFirstName,StudentLastName,count(*)를 선택합니다.

다음은 출력입니다.

+------------------+-----------------+-------+| 학생이름 | 학생 성 | 합계 |+------+-----------------+-------+| 존 | 스미스 | 2 || 데이비드 | 스미스 | 2 |+------+-----------------+-------+2행 세트(0.00초)