Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 단일 열의 중복 값 개수를 구하는 방법

MySQL에서 하나의 열(컬럼)에 같은 값이 몇 번 반복되어 저장되어 있는지 확인하고 싶을 때가 있습니다. 이럴 때는 GROUP BY 절과 COUNT() 함수를 함께 사용하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
   -> (
   -> Number int
   -> );
Query OK, 0 rows affected (0.83 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 여러 레코드를 추가합니다. 의도적으로 중복된 값(20, 10)을 포함시켰습니다.

mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable values(30);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.47 sec)

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.15 sec)

3. 전체 레코드 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+--------+
| Number |
+--------+
|     20 |
|     20 |
|     10 |
|     30 |
|     10 |
|     10 |
+--------+
6 rows in set (0.00 sec)

4. 중복 값 개수 세기

단일 열에서 각 값이 몇 번 나타나는지 확인하려면 GROUP BY와 COUNT(*)를 사용한 다음 쿼리를 실행합니다.

mysql> select Number,count(*) from DemoTable group by Number;

실행 결과는 다음과 같습니다.

+--------+----------+
| Number | count(*) |
+--------+----------+
|     20 |        2 |
|     10 |        3 |
|     30 |        1 |
+--------+----------+
3 rows in set (0.00 sec)

결과 해석

쿼리 결과를 보면 다음과 같은 의미입니다.

  • 20은 총 2번 등장했습니다.
  • 10은 총 3번 등장했습니다.
  • 30은 총 1번 등장했습니다.

이처럼 GROUP BY로 열의 값을 그룹화한 뒤 COUNT(*)로 각 그룹의 행 개수를 집계하면, 단일 열에 포함된 중복 값의 개수를 손쉽게 파악할 수 있습니다. 참고로 결과를 개수 기준 내림차순으로 정렬하고 싶다면 쿼리 끝에 ORDER BY count(*) DESC를 추가하면 됩니다.