select return (0 row 0 total rows) null 결과 출력처리방법
쿼리에서 조건을 걸어 데이터가 return 0 row일때
쿼리에서 "값이 없다" 라는 결과를 리턴값으로 처리하는 방법을 사용해보려한다.
1. 테이블 생성하기
CREATE TABLE `CODE_TABLE` (
`CODE_CD` VARCHAR(10) NOT NULL COLLATE 'utf8_bin',
`CODE_NM` VARCHAR(10) NOT NULL COLLATE 'utf8_bin'
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB;
코드테이블이라는 테스트 테이블을 생성한다.
코드테이블은 코드, 코드명 컬럼으로 구성된다.
2. 데이터 넣기
INSERT INTO CODE_TABLE VALUES('10','개발팀');
INSERT INTO CODE_TABLE VALUES('20','영업팀');
INSERT INTO CODE_TABLE VALUES('30','기획팀');
기초데이터를 넣어준다.
3. 없는 데이터 조회하기
-- SELECT한 Row가 0이므로 IFNULL 처리 불가
SELECT IFNULL(A.CODE_NM, '없는 코드') AS CODE_NM
FROM CODE_TABLE A
WHERE A.CODE_CD = '100';
현재 CODE_CD컬럼의 데이터는 10,20,30 이 들어가 있고
where절에서 '100' 을 조회하면 데이터가 조회되지 않는다.
위와 같이 쿼리를 작성하면 데이터가 있다면 코드명이 나오고
데이터가 없다면 아무것도 나오지 않는다.
SELECT 한 결과가 0건이라도
IFNULL에 걸린 것 처럼 "없는 코드" 라고 결과가 나오게 하고 싶다.
4. DUAL 테이블과 외부조인 걸기
SELECT IFNULL(A.CODE_NM, '없는 코드') AS CODE_NM
FROM CODE_TABLE A
RIGHT OUTER JOIN (SELECT '') AS m_dual
ON A.CODE_CD = '100';
DUAL을 외부조인으로 사용하여 CODE가 없다면 "없는코드", 있다면 코드명이 나온다.
5. 집계함수 사용하기
SELECT IFNULL(MAX(A.CODE_NM), '없는 코드') AS CODE_NM
FROM CODE_TABLE A
WHERE A.CODE_CD = '100';
집계함수를 사용하여 CODE가 없다면 "없는코드", 있다면 코드명이 나온다.
프로시저나 함수를 작성할때
결과값이 없더라도 MESSAGE로 출력하고 싶다면 유용하게 쓰일수 있을 것 같다.
'Database > mysql tip' 카테고리의 다른 글
Mysql my.cnf 설정 (0) | 2021.04.11 |
---|---|
MySQL Connection Memory Management (0) | 2021.04.11 |
mysql Index 와 다중 컬럼 인덱스 (0) | 2021.04.11 |
mysqldump 사용법 (0) | 2021.04.11 |
MySQL 계층형 쿼리 구현하기 (0) | 2021.04.06 |
SQL EXPLAIN 정리 (0) | 2021.04.06 |
[MySQL][TIP] MySQL JOIN(LEFT, RIGHT, INNER, OUTER) (0) | 2021.01.06 |
[MySQL][TIP] 필드 원소 갯수, 각각 원소 갯수세기 SUM IF (0) | 2021.01.06 |