이를 위해 집계 함수 MAX()와 함께 COALESCE()를 사용할 수 있습니다.
구문은 다음과 같습니다.
SELECT COALESCE(MAX(`yourColumnName`), 0) FROM yourTableName;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table avoidNullDemo -> ( -> `rank` int -> ); Query OK, 0 rows affected (0.53 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오.
쿼리는 다음과 같습니다
mysql> insert into avoidNullDemo values(10); Query OK, 1 row affected (0.20 sec) mysql> insert into avoidNullDemo values(NULL); Query OK, 1 row affected (0.18 sec) mysql> insert into avoidNullDemo values(20); Query OK, 1 row affected (0.17 sec) mysql> insert into avoidNullDemo values(NULL); Query OK, 1 row affected (0.11 sec) mysql> insert into avoidNullDemo values(100); Query OK, 1 row affected (0.11 sec) mysql> insert into avoidNullDemo values(NULL); Query OK, 1 row affected (0.16 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다.
쿼리는 다음과 같습니다
mysql> select *from avoidNullDemo;
다음은 NULL 값이 있는 출력입니다.
+------+ | rank | +------+ | 10 | | NULL | | 20 | | NULL | | 100 | | NULL | +------+ 6 rows in set (0.00 sec)
다음은 null 결과를 피하기 위한 쿼리입니다.
mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;
다음은 출력입니다.
+--------------------------+ | COALESCE(MAX(`rank`), 0) | +--------------------------+ | 100 | +--------------------------+ 1 row in set (0.00 sec)
테이블이 비어있는 경우입니다.
위의 테이블에서 모든 레코드를 삭제합시다.
쿼리는 다음과 같습니다
mysql> truncate table avoidNullDemo; Query OK, 0 rows affected (0.92 sec)
이제 위의 테이블은 비어 있습니다. 빈 테이블에 대해 위의 쿼리를 구현해 보겠습니다.
mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;
다음은 출력입니다.
+--------------------------+ | COALESCE(MAX(`rank`), 0) | +--------------------------+ | 0 | +--------------------------+ 1 row in set (0.00 sec)