Every derived table must have its own alias

    목차

MySQL에서 파생된 모든 테이블은 alias를 가져야한다.

MySQL과 Oracle은 from절에 서브 쿼리를 넣어 쿼리의 결과 테이블을 가지고 질의를 수행할 수 있다.

select *
from (
    select
        date_format(SALES_DATE, '%Y-%m-%d') SALES_DATE,
        PRODUCT_ID,
        USER_ID,
        SALES_AMOUNT
    from 
        ONLINE_SALE N
    where
        N.SALES_DATE between '2022-03-01' and '2022-03-31'
    union all
    select
        date_format(SALES_DATE, '%Y-%m-%d') SALES_DATE,
        PRODUCT_ID,
        null USER_ID,
        SALES_AMOUNT
    from
        OFFLINE_SALE F
    where
        F.SALES_DATE between '2022-03-01' and '2022-03-31'
) T
order by T.SALES_DATE, T.PRODUCT_ID, T.USER_ID

위 쿼리 내용이 중요한 것은 아니고

from절을 잘 살펴봐야 한다.

from절에 서브 쿼리를 통해 새로운 결과 테이블을 만드는데

from 절에 있는 서브 쿼리를 통해 파생된 결과 테이블에 T라는 alias를 주지 않으면 해당 에러가 발생한다.

해당 에러는 Oracle에서는 발생하지 않는다.