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
핫도구