반응형
[에러]
You can't specify target table '테이블' for update in FROM clause
[설명]
위와 같은 에러가 나오는 경우는
서브쿼리를 수행할 시에는 서브쿼리의 FROM절과 업데이트 target 모두를 위해
같은 테이블을 사용할 수 없다.
즉, 같은 테이블을 불러와서 같은 테이블에서 업데이트(UPDATE), 삭제(DELETE)를 못한다.
소스예>
DELETE FROM 테이블1 WHERE 컬럼1 IN (SELECT A.컬럼1
FROM 테이블1 AS A
LEFT JOIN 테이블2 AS B ON A.컬럼1=B.컬럼2
WHERE B.컬럼2 IS NULL
);
[해결]
서브쿼리를 한번 더 감싸준다.
소스예>
DELETE FROM 테이블1 WHERE 컬럼1 IN (SELECT *
FROM (SELECT A.컬럼1
FROM 테이블1 AS A
LEFT JOIN 테이블2 AS B ON A.컬럼1=B.컬럼2
);
[해결]
서브쿼리를 한번 더 감싸준다.
소스예>
DELETE FROM 테이블1 WHERE 컬럼1 IN (SELECT *
FROM (SELECT A.컬럼1
FROM 테이블1 AS A
LEFT JOIN 테이블2 AS B ON A.컬럼1=B.컬럼2
WHERE B.컬럼2 IS NULL) A
);
);
반응형