SQL

SQL - Subquery(여러번의 연산 수행)

최 수빈 2024. 11. 24. 14:39

 

  • 여러번의 연산 수행
  • 조건문에 연산 결과 사용
  • 조건에 Query 결과 사용

 

SELECT column1, splecial_column
FROM
    (/* subquery */
    SELECT column1, column2 special_column
    FROM table1
    ) a

=> 마지막 a는 서브쿼리의 alias로 넣어줌(메인 쿼리가 서브쿼리의 결과를 사용할 때 필수적)

 

SELECT column1, column2
FROM table1
WHERE column1 = (SELECT col1 FROM table2)

 

 

 

 

사용예시)

 

SELECT order_id, restaurant_name, IF(over_time>0, over_time, 0) over_time
FROM 
    (
    SELECT order_id, restaurant_name, food_preparation_time-25 over_time
    FROM food_orders
    ) a

 

 order_id, restaruant_name, over_time 데이터 조회 FROM 가상의 a 테이블에서 !

 

a 테이블 => order_id, restaurant_name, over_time 열을 가지고 있는데, 여기서 over_time 컬럼은 food_orders테이블의 food_preparation컬럼의 값들에서 25를 뺀 값을 데이터로 가진 컬럼.

 

메인 쿼리의 SELECT문에서 over_time은 서브쿼리의 over_time값이 0보다 크면 over_time의 value를 그대로 적어주고, 같거나 작으면 0을 출력.

 

주문번호와 식당이름, 음식준비시간이 25분초과 시 지연시간을 조회하는 쿼리다.