MySQL에서 BIGINT 타입으로 선언된 전화번호 열에서 고유한 전화번호의 개수를 구하려면 COUNT() 함수와 DISTINCT 키워드를 함께 사용하면 됩니다. COUNT()는 레코드의 개수를 세는 집계 함수이며, DISTINCT는 중복을 제거한 고유한 값만 대상으로 삼습니다. 두 가지를 조합하면 중복 없이 실제 고유 전화번호가 몇 개 존재하는지 손쉽게 확인할 수 있습니다.
예제 테이블 생성
먼저 BIGINT 타입의 PhoneNumber 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
PhoneNumber bigint
);
Query OK, 0 rows affected (1.29 sec)샘플 데이터 삽입
INSERT 명령을 사용해 일부 레코드를 삽입합니다. 이때 의도적으로 중복된 전화번호도 함께 넣어 고유 개수 계산이 어떻게 동작하는지 확인합니다.
mysql> insert into DemoTable values(8567789898); Query OK, 1 row affected (0.94 sec) mysql> insert into DemoTable values(8567789898); Query OK, 1 row affected (0.34 sec) mysql> insert into DemoTable values(9876564534); Query OK, 1 row affected (0.43 sec) mysql> insert into DemoTable values(9087896545); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable values(7656456589); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(9876564534); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(9087896545); Query OK, 1 row affected (0.18 sec)
전체 데이터 조회
SELECT 문을 사용해 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+ | PhoneNumber | +-------------+ | 8567789898 | | 8567789898 | | 9876564534 | | 9087896545 | | 7656456589 | | 9876564534 | | 9087896545 | +-------------+ 7 rows in set (0.00 sec)
총 7개의 레코드가 저장되어 있지만, 자세히 보면 일부 번호가 중복되어 있음을 알 수 있습니다.
고유 전화번호 개수 세기
다음은 전화번호 열에서 고유한 전화번호의 개수를 구하는 쿼리입니다. COUNT(DISTINCT 컬럼명) 형태로 작성하며, 별칭(Alias)을 지정하면 결과를 더 읽기 쉽게 만들 수 있습니다.
mysql> select count(distinct PhoneNumber) AS UniquePhoneNumber from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------------+ | UniquePhoneNumber | +-------------------+ | 4 | +-------------------+ 1 row in set (0.00 sec)
결과 해석
결과를 보면 7개의 레코드 중 실제로 고유한 전화번호는 4개(8567789898, 9876564534, 9087896545, 7656456589)임을 확인할 수 있습니다. 이처럼 COUNT(DISTINCT ...) 조합은 회원 관리 시스템이나 연락처 데이터베이스에서 중복 등록 여부를 점검하거나 통계를 낼 때 매우 유용하게 활용됩니다.