Database/MySQL,MariaDB

[MySQL,MariaDB]SQL 오류 (1093)

  • -
반응형
SQL 오류 (1093): Table 'PM_COMMUTE' is specified twice, both as a target for 'UPDATE' and as a separate source for data

 

MariaDB(또는 MySQL)를 사용하다가 1093 에러와 마주친다면 서브쿼리 사용이 문제일 것입니다.

아래는 에러가 발생한 쿼리 로그입니다.

 UPDATE PM_COMMUTE
    SET FROMDATE = '2020.04.29 13:42:43'
  WHERE WORKDAY = (		
                 SELECT MAX(WORKDAY) WORKDAY
                 FROM PM_COMMUTE
                 WHERE USERCD = 'admin'
                 AND FIXYN = 'N'
                 )

 

MariaDB는 Oracle과 달리 UPDATE 또는 DELETE 시에 서브쿼리의 FROM 테이블과 업데이트 타겟이 되는 테이블을 같이 사용할 수 없습니다. 따라서 서브쿼리를 한번더 감싸줘서 Alias 처리를 해주면 에러를 해결할 수 있습니다.

 UPDATE PM_COMMUTE
   SET FROMDATE = '2020.04.29 13:42:43'
 WHERE WORKDAY = (		
                 SELECT A.WORKDAY
                 FROM (
                       SELECT MAX(WORKDAY) WORKDAY
                       FROM PM_COMMUTE
                       WHERE USERCD = 'admin'
                       AND FIXYN = 'N'
                       ) A
                )

 

반응형

'Database > MySQL,MariaDB' 카테고리의 다른 글

[MySQL,MariaDB]암호화, 복호화  (5) 2021.07.30
[MySQL,MariaDB]피벗(Pivot) 사용하기  (2) 2020.05.11
[MySQL,MariaDB]Outer Join 조건 주기  (2) 2020.04.30
[MySQL]현재 시간 입력  (0) 2018.09.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.