>  기사  >  데이터 베이스  >  mysql에서 중복된 데이터를 제거하는 방법

mysql에서 중복된 데이터를 제거하는 방법

青灯夜游
青灯夜游원래의
2022-01-05 12:05:3761359검색

mysql에서는 "SELECT" 문과 "DISTINCT" 키워드를 사용하여 중복 제거 쿼리를 수행하고 중복 데이터를 필터링할 수 있습니다. 구문은 "SELECT DISTINCT field name FROM data table name;"입니다.

mysql에서 중복된 데이터를 제거하는 방법

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

MySQL에서는 SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,MySQL 提供了 DISTINCT 키워드를 사용하세요.

DISTINCT 키워드의 주요 기능은 데이터 테이블의 하나 이상의 필드에서 중복 데이터를 필터링하고 사용자에게 하나의 데이터만 반환하는 것입니다.

DISTINCT 키워드의 구문 형식은 다음과 같습니다.

SELECT DISTINCT <字段名> FROM <表名>;

그 중 "필드 이름"은 중복 레코드를 제거해야 하는 필드의 이름입니다. 필드가 여러 개인 경우 쉼표로 구분하세요.

DISTINCT 키워드 사용 시 다음 사항에 주의해야 합니다.

  • DISTINCT 키워드는 SELECT 문에서만 사용할 수 있습니다.

  • 하나 이상의 필드를 중복 제거하는 경우 DISTINCT 키워드가 모든 필드 앞에 있어야 합니다.

  • DISTINCT 키워드 뒤에 여러 필드가 있는 경우 여러 필드가 결합되어 중복이 제거됩니다. 즉, 여러 필드의 조합이 정확히 동일한 경우에만 중복이 제거됩니다.

Example

다음에서는 특정 예를 사용하여 중복되지 않은 데이터를 쿼리하는 방법을 보여줍니다.

테스트 데이터베이스에 있는 학생 테이블의 테이블 구조와 데이터는 다음과 같습니다.

mysql> SELECT * FROM test.student;
+----+----------+------+-------+
| id | name     | age  | stuno |
+----+----------+------+-------+
|  1 | zhangsan |   18 |    23 |
|  2 | lisi     |   19 |    24 |
|  3 | wangwu   |   18 |    25 |
|  4 | zhaoliu  |   18 |    26 |
|  5 | zhangsan |   18 |    27 |
|  6 | wangwu   |   20 |    28 |
+----+----------+------+-------+
6 rows in set (0.00 sec)

결과에 따르면 학생 테이블에는 6개의 레코드가 있습니다.

student 테이블의 age 필드를 중복 제거하는 방법은 다음과 같습니다.

mysql> SELECT DISTINCT age FROM student;
+------+
| age  |
+------+
|   18 |
|   19 |
|   20 |
+------+
3 rows in set (0.00 sec)

student 테이블의 name 및 age 필드를 중복 제거한 결과는 다음과 같습니다. :

mysql> SELECT DISTINCT name,age FROM student;
+----------+------+
| name     | age  |
+----------+------+
| zhangsan |   18 |
| lisi     |   19 |
| wangwu   |   18 |
| zhaoliu  |   18 |
| wangwu   |   20 |
+----------+------+
5 rows in set (0.00 sec)

student 테이블의 경우 모든 필드가 중복 제거됩니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT DISTINCT * FROM student;
+----+----------+------+-------+
| id | name     | age  | stuno |
+----+----------+------+-------+
|  1 | zhangsan |   18 |    23 |
|  2 | lisi     |   19 |    24 |
|  3 | wangwu   |   18 |    25 |
|  4 | zhaoliu  |   18 |    26 |
|  5 | zhangsan |   18 |    27 |
|  6 | wangwu   |   20 |    28 |
+----+----------+------+-------+
6 rows in set (0.00 sec)

DISTINCT는 대상 필드만 반환할 수 있고 다른 필드는 반환할 수 없기 때문에 실제 상황에서는 DISTINCT를 사용하는 경우가 많습니다. 고유한 필드 수의 항목을 반환하는 키워드입니다.

이름과 나이 필드를 중복 제거한 후 학생 테이블의 레코드 수를 쿼리합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT COUNT(DISTINCT name,age) FROM student;
+--------------------------+
| COUNT(DISTINCT name,age) |
+--------------------------+
|                        5 |
+--------------------------+
1 row in set (0.01 sec)

결과는 이름 중복을 제거한 후 학생 테이블에 5개의 레코드가 있음을 보여줍니다. 및 연령 필드.

【관련 추천: mysql 비디오 튜토리얼

위 내용은 mysql에서 중복된 데이터를 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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