Programming/SQL / / 2024. 4. 3. 17:40

[MySQL]You can't specify target table 테이블명 for update in FROM clause

728x90
INSERT INTO member (mno, mname, 생략) VALUES((SELECT MAX(mno) + 1 FROM member), '김철수', 생략);

위와 같은 쿼리문이 있다고 가정합니다.

문제가 될 것 같지 않은데 실제로 실행을 해보면 제목처럼 대상 테이블을 지정할 수 없네 어쩌네 하면서 오류가 발생합니다. MySQL에서는 동일한 테이블에 대한 서브 쿼리가 제한되어 있습니다. 그래서 이런 경우는 별칭을 붙이면 됩니다.

INSERT INTO member (mno, mname, 생략) VALUES((SELECT MAX(m.mno) + 1 FROM member AS m), '김철수', 생략)
반응형