집 >데이터 베이스 >MySQL 튜토리얼 >하위 쿼리를 사용하여 테이블을 업데이트할 때 MySQL에서 오류 1093이 발생하는 이유는 무엇입니까?
MySQL 오류 1093: 하위 쿼리의 대상 테이블 업데이트
MySQL에서 다음 쿼리를 실행하려고 할 때:
UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)
다음과 같은 상황이 발생할 수 있습니다 오류:
#1093 - You can't specify target table 'giveaways' for update in FROM clause
이 오류는 MySQL이 UPDATE 문의 대상 테이블(경품)을 WHERE 절 내의 하위 쿼리에 사용하는 것을 허용하지 않기 때문에 발생합니다.
적응 참조 기사의 솔루션
이 문제를 해결하려면 다음을 사용하여 참조한 기사에 제공된 솔루션을 적용하세요. 중첩된 하위 쿼리. 업데이트된 쿼리는 다음과 같습니다.
UPDATE giveaways SET winner='1' WHERE Id = (SELECT Id FROM (SELECT MAX(Id) AS id FROM giveaways) AS t)
이 쿼리는 경품 테이블에서 최대 Id 값을 하위 쿼리(t)로 효과적으로 선택한 다음 해당 값을 사용하여 외부 쿼리의 승자 열을 업데이트합니다.
하위 쿼리를 중첩하면 하위 쿼리의 FROM 절에 대상 테이블(경품)을 지정하는 것을 방지하여 문제를 해결할 수 있습니다. 오류가 발생했습니다.
위 내용은 하위 쿼리를 사용하여 테이블을 업데이트할 때 MySQL에서 오류 1093이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!