개발은 처음이라 개발새발

서브쿼리 간단정리 본문

mysql

서브쿼리 간단정리

leon_choi 2023. 5. 31. 23:01
반응형

 

서브쿼리는 SELECT , FROM ,WHERE 절까지 곳곳에서 많이 사용합니다. 저는 개인적으로 실무를 하면서 서브쿼리를 자주 사용하는데요. 이유는 여러가지가 있겠지만 대표적인 이유로는 특정 테이블의 하나의 조건 혹은 하나의 컬럼만 필요한데 굳이 JOIN을 하게 되면 여러모로 불편한 점이 생기기 때문입니다. 

 

1. SELECT절에 사용하는 서브쿼리

- SELECT절에서 사용하는 서브쿼리를 스칼라 쿼리라고 하는데요. SELECT 절에서 사용하는 서브쿼리의 특징으로는 불러오는 값을 하나만 지정해야 한다는 점입니다. SELECT절 서브쿼리는 나중에 따로 더 다뤄보도록하겠습니다.

 

2. FROM절에 사용하는 서브쿼리

https://data-so-hard.tistory.com/78

 

서브쿼리를 활용한 DELETE [LeetCode]

https://leetcode.com/problems/delete-duplicate-emails/ Delete Duplicate Emails - LeetCode Can you solve this real interview question? Delete Duplicate Emails - Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | id |

data-so-hard.tistory.com

FROM절에서 활용하는 서브쿼리는 지난 시간 퀴즈를 통해 먼저 맛보기를 해봤는데요.  FROM 이후 사용하는 서브쿼리는 테이블 역할을 한다는 것을 반드시 알아둬야 합니다. 그리고 FROM절에 사용하는 서브쿼리는 꼭 별칭 AS를 지정해줘야 합니다.

예시
SELECT mini.min_id
FROM (SELECT email, min(id) AS min_id
      FROM Person 
      GROUP BY email) AS mini ---- 꼭 별칭을 써줘야 한다.

3.WHERE절에 사용하는 서브쿼리

https://data-so-hard.tistory.com/59

 

[My SQL] 서브쿼리

서브쿼리란 쿼리문 안에 또 쿼리문이 들어 있는 것을 말합니다. 지금까지는 숫자의 범위 안에 있는 데이터이거나 그것보다 큰 데이터를 찾을 때 where이나 between문 안에 직접적으로 숫자를 입력

data-so-hard.tistory.com

where 절에 사용하는 서브쿼리는 두가지가 있습니다. 조건값이 하나인 것과 여러개 값이 나오는 것입니다. 여러개의 값을 표기하기 위해서는 = 대신 IN을 활용하면 됩니다.

1. 결과값이 하나
SELECT *
FROM crimees
WHERE date = (SELECT MAX(date) FROM crimes)

2. 결과값이 여러개
SELECT *
FROM crimees
WHERE date IN (SELECT date FROM crimes ORDER BY date LIMT 5)
반응형