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

MySQL에 레코드가 없는 경우 합계 또는 0을 선택하는 방법은 무엇입니까?

<시간/>

COALESCE() 내에서 집계 함수 sum()을 사용할 수 있습니다. 아래 구문은 레코드가 존재하는 경우 모두의 합계를 반환하고 그렇지 않으면 0을 반환합니다. 구문은 다음과 같습니다.

select COALESCE(sum(yourColumnName2), 0) AS anyVariableName from yourTableName
where yourColumnName1 like '%yourValue%';

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table SumDemo
-> (
-> Words varchar(100),
-> Counter int
-> );
Query OK, 0 rows affected (0.93 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.

mysql> insert into SumDemo values('Are You There',10);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumDemo values('Are You Not There',15);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SumDemo values('Hello This is MySQL',12);
Query OK, 1 row affected (0.09 sec)

mysql> insert into SumDemo values('Hello This is not MySQL',14);
Query OK, 1 row affected (0.24 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> select *from SumDemo;

다음은 출력입니다.

+-------------------------+---------+
| Words                   | Counter |
+-------------------------+---------+
| Are You There           | 10      |
| Are You Not There       | 15      |
| Hello This is MySQL     | 12      |
| Hello This is not MySQL | 14      |
+-------------------------+---------+
4 rows in set (0.00 sec)

다음은 레코드가 존재할 때마다 합계를 제공하는 쿼리입니다.

mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%hello%';

다음은 출력입니다.

+----------+
| SumOfAll |
+----------+
| 26       |
+----------+
1 row in set (0.00 sec)

레코드가 없으면 0이 됩니다. 쿼리는 다음과 같습니다.

mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%End of MySQL%';

다음은 출력입니다.

+----------+
| SumOfAll |
+----------+
| 0       |
+----------+
1 row in set (0.00 sec)