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

중복을 삭제하고 MySQL의 테이블에 한 행을 남겨두는 방법은 무엇입니까?

<시간/>

중복을 삭제하고 테이블에 하나의 행을 남기려면 임시 테이블의 개념을 사용해야 합니다. 단계는 다음과 같습니다 -

선택 고유 yourColumnName1, yourColumnName2 from yourTableName;truncate table yourTableName;insert into yourTableName(yourColumnName1, yourColumnName2)으로 anytemporaryTableName 테이블 생성 yourtemporaryTableName에서 yourColumnName1, yourColumnName2 선택;drop table yourtemporaryTableName;

테이블을 만들어 봅시다 -

mysql> create table demo39−> (−> user_id int,−> user_name varchar(20)−> );쿼리 OK, 영향을 받는 행 0개(0.74초)

insert 명령을 사용하여 일부 레코드를 테이블에 삽입하십시오 -

mysql> demo39 값에 삽입(10,'John');쿼리 OK, 1행 영향(0.19초)mysql> demo39 값에 삽입(10,'John');쿼리 OK, 1행 영향(0.13초) )mysql> demo39 값에 삽입(11,'David');쿼리 OK, 1행 영향(0.20초)mysql> demo39 값에 삽입(11,'David');쿼리 OK, 1행 영향(0.17초) 

select 문을 사용하여 테이블의 레코드 표시 -

mysql> select *from demo39;

이것은 다음과 같은 출력을 생성합니다 -

+---------+-----------+| 사용자 아이디 | 사용자 이름 |+---------+-----------+| 10 | 존 || 10 | 존 || 11 | 데이비드 || 11 | David |+---------+-----------+세트의 행 4개(0.00초)

다음은 중복을 삭제하고 테이블에 하나의 행을 남기는 쿼리입니다 -

mysql> create table TemporaryTable as select 고유 user_id, user_name from demo39;Query OK, 영향을 받는 행 2개(1.39초)Records:2 중복:0 Warnings:0mysql> truncate table demo39;Query OK, 영향을 받는 행 0개(2.30초) )mysql> insert into demo39(user_id, user_name) 임시 테이블에서 user_id, user_name 선택, 쿼리 확인, 영향을 받는 2개 행(0.16초) 레코드:2 중복:0 경고:0mysql> 테이블 삭제 임시 테이블, 쿼리 확인, 영향을 받는 0개(1.01 초)

select 문을 사용하여 테이블의 레코드 표시 -

mysql> select *from demo39;

이것은 다음과 같은 출력을 생성합니다 -

+---------+-----------+| 사용자 아이디 | 사용자 이름 |+---------+-----------+| 10 | 존 || 11 | David |+---------+-----------+세트에 행 2개(0.00초)