본문 바로가기
  • [성공하는 개발자] - Developer
DataBase

MariaDB(or MySQL) 1093 오류 발생

by Sein-JH 2021. 4. 19.
728x90

아래와 같은 SQL을 실행할 때

INSERT INTO T_NAME (
    ID, NAME, ORDER_NO
)
VALUES (
    #{id}, #{name},
    (
    SELECT IFNULL(MAX(ORDER_NO), 0) + 1
      FROM T_NAME
     WHERE ID = #{id}
    )
)

SQL 오류 (1093): Table 'T_NAME' is specified twice, both as a target for 'INSERT' and as a separate source for data 와 같은 오류가 발생한다면 ....

 

INSERT INTO T_NAME (
    ID, NAME, ORDER_NO
)
VALUES (
    #{id}, #{name},
    (
    SELECT IFNULL(MAX(ORDER_NO), 0) + 1
      FROM T_NAME ALIAS_FOR_SUBQUERY
     WHERE ID = #{id}
    )
)

위와 같이 서브쿼리 대상 테이블에 별명(alias)을 주면 해결된다.

 

오라클에서는 동일 테이블 내에서의 서브쿼리 조합이 가능하지만 MariaDB(or MySQL)는 기본적으로 지원하지 않는 것 같다.

 

출처: https://finkle.tistory.com/118 

'DataBase' 카테고리의 다른 글

[MySQL] NULL 처리(IFNULL, CASE, COALESCE)  (0) 2022.01.17

댓글