SQL) You can't specify target table '<Table>' for update in FROM clause
본문 바로가기
Data Base/SQL

SQL) You can't specify target table '<Table>' for update in FROM clause

by 조훈이 2021. 9. 2.

 ※ ERROR : You can't specify target table '<Table>' for update in FROM clause ※ 


#문제의 코드
DELETE FROM Person 
WHERE Id NOT IN (
    SELECT MIN(Id)
    FROM Person 
    GROUP BY Email
);

#해결된 코드
DELETE FROM Person 
WHERE Id NOT IN (
    SELECT Sub.Minval FROM (
        SELECT MIN(Id) AS Minval
        FROM Person
        GROUP BY Email
        ) AS Sub
    );

문제 Link : Delete Duplicate Emails - LeetCode

 

  위와 같은 코드를 작성하였을 때 이런 에러가 발생하였다. 계속해서 확인을 해 본 결과 DELETE 로 Update 를 하고있는 Person Table 과 WHERE 조건절 안에서 참조되는 Person Table 이 같은 Table 이라서 명화갛게 구분할 수 없기에 발생하는 에러인 것 같다. 이러한 에러는 Sub Query 절을 괄호로 한번 더 감싸서 각 위치에서 사용되는 Table 을 명확하게 하여 해결할 수 있다.

 

  해결된 코드를 보면 Sub Query 에서 SELECT 되는 DATA 들을 괄호로 한번 더 묶어서 Target Table 을 명확하게 하였다. 그 결과 오류를 해결할 수 있었다.

 

 

728x90

'Data Base > SQL' 카테고리의 다른 글

SQL) 문자열 다루기_1 (LENGTH/CONCAT/SUBSTRING)  (0) 2021.09.10
SQL) 순위함수(RANK, DENSE_RANK, ROW_NUMBER)  (0) 2021.09.03
SQL) JOIN (INNER/LEFT/RIGHT/OUTER)  (1) 2021.08.29
SQL) 연산자 우선순위  (0) 2021.08.23
엔터티 (Entity)  (0) 2021.08.12

댓글