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

COUNT(*)를 사용하여 여러 행 대신 단일 행을 반환하는 방법은 무엇입니까?

<시간/>

값을 그룹화하고 여러 값을 제거한 개수를 표시하려면 GROUP BY를 COUNT(*)와 함께 사용해야 합니다. 먼저 테이블을 생성해 보겠습니다.

mysql> create table DemoTable (Value int);
Query OK, 0 rows affected (0.55 sec)

다음은 삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하는 쿼리입니다.

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.13 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.11 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(40);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values(60);
Query OK, 1 row affected (0.25 sec)

다음은 select 명령을 사용하여 테이블의 레코드를 표시하는 쿼리입니다.

mysql> select *from DemoTable;

그러면 다음과 같은 출력이 생성됩니다.

+-------+
| Value |
+-------+
|    10 |
|    20 |
|    10 |
|    30 |
|    10 |
|    20 |
|    40 |
|    10 |
|    20 |
|    20 |
|    60 |
+-------+
11 rows in set (0.00 sec)

다음은 유사한 레코드의 수(예:우리의 경우 10, 20, 30, 40, 60)를 반환하는 쿼리입니다.

mysql> SELECT COUNT(*) FROM (SELECT *FROM DemoTable GROUP BY Value) AS tbl;

그러면 다음과 같은 출력이 생성됩니다.

+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)