Just Do It

Exists / not Exists

by 핫도구
반응형
Exists / not Exists

 - 데이터가 존재하는지 아닌지 여부를 확인하는 연산자(boolean)

일반적인 형식

select columns from table where exists / not exists;

이지만 column에 subquery로 넣을 수 있다. 
이를 활용한 예를 확인해보면 

-- teamno가 team table에 있는 경우만 student 출력하기
SELECT * FROM student s WHERE EXISTS (SELECT * FROM team t WHERE s.teamno = t.teamno );

-- teamno가 team table에 없는 경우만 info를 '조 없음'으로 출력하기
SELECT studentno, name, age, s.teamno, IF (NOT EXISTS (SELECT * FROM team t WHERE s.teamno = t.teamno ) = 0, info, '조 없음') info FROM student s;

-- 조장만 학생만 출력하기
SELECT * FROM student s WHERE EXISTS (SELECT * FROM team t WHERE t.captain = s.studentno);

-- 위와 비슷하게 in을 활용하기(sub_query : multi_rows_subquery)
SELECT * FROM student s 
WHERE studentno in(SELECT captain FROM team);

으로 활용할 수 있다. 

복합구문으로 student table에서 team table의 captain에 studentno가 존재하면 '조장' / 아니면 '조원' 출력하기
이는 총 2가지 방법으로 출력이 가능하다.

SELECT studentno, name, age, teamno, info, 
if(EXISTS (SELECT * FROM team t WHERE t.captain = s.studentno),'조장','조원') captainOrNot 
FROM student s;

SELECT studentno, name, age, teamno, info, 
if(NOT EXISTS (SELECT * FROM team t WHERE t.captain = s.studentno),'조원','조장') captainOrNot 
ROM student s;

이처럼 exists / not exists를 활용하여 '조장'과 '조원'의 위치를 바꿔 사용할 수 있다.

 

반응형

'Mysql > Basic' 카테고리의 다른 글

Set Calculation(집합연산)  (0) 2024.08.07
IF / IFNULL / CASE  (0) 2024.08.06
Date function  (0) 2024.08.06
substr & replace & LPAD & RPAD  (0) 2024.08.06
간단한 수식정리  (0) 2024.08.05

블로그의 정보

AquaMan

핫도구

활동하기