이전글 https://spring0691.tistory.com/59
서브쿼리 연산자
# 1개이상의 행을 반환하면 true, 아무것도 없으면 false
EXISTS (서브쿼리)
select exists(select * from current_time); ㅡ> true
# 서브쿼리에서 같은 행이 하나라도 있으면 true, 아니면 false
select * from table where amount in (10,20,30);
id | name | amount | | id | name | amount
-----+------------+--------+ +-----+--------+--------
1 | apple | 30 | | 1 | apple | 30
2 | banana | 19 | | 3 | melon | 10
3 | melon | 10 | | 5 | kiwi | 30
4 | strawberry | 43 | |
5 | kiwi | 30 | |
# 서로 같지 않은 서브쿼리 행이 하나라도 있으면 true, 동일한 로우가 있으면 false
select * from table where amount not in (10,20,30);
id | name | amount id | name | amount
----+------------+-------- ----+------------+--------
1 | apple | 30 2 | banana | 19
2 | banana | 19 4 | strawberry | 43
3 | melon | 10
4 | strawberry | 43
5 | kiwi | 30
# 서브쿼리에서 같은 행이 하나라도 있으면 true, 아니면 false + 비교 연산자
<표현> <비교 연산자> ANY (서브쿼리)
<표현> <비교 연산자> SOME (서브쿼리)
select * from table where 10 = any (select amount from assumption_amount);
assumption_amount = [30, 20, 10, 60, 30]
id | name | amount
----+------------+--------
1 | apple | 30
2 | banana | 19
3 | melon | 10
4 | strawberry | 43
5 | kiwi | 30
# 표현과 서브쿼리가 완전히 동일하다면 true, 하나라도 다르다면 false
<표현> <비교 연산자> ALL (서브쿼리)
<표현> <>ALL (서브쿼리) == not in 연산자
select * from real_amount where 10 <= all (select amount from assumption_amount);
assumption_amount = [30, 20, 10, 60, 30]
각 원소값이 모두 10보다 크기때문에 true가 되고 따라서 real_amount의 모든 값이 출력됨
'SQL' 카테고리의 다른 글
SQL 문자열 연산자 (0) | 2025.01.20 |
---|---|
SQL 패턴매칭 연산자 (0) | 2025.01.20 |
SQL 날짜 & 시간 연산자, 날짜 & 시간 함수 (0) | 2025.01.20 |
SQL JSON 생성,처리 함수 (0) | 2025.01.20 |
SQL 배열 연산자 (0) | 2025.01.20 |