집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 해결하는 방법은 무엇입니까?
MySQL 오류 1093: 쿼리 제한 업데이트
질문:
하위 쿼리를 사용하여 pers
테이블을 업데이트하려고 하면 "FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다"라는 오류가 발생합니다(오류 1093).
쿼리:
<code class="language-sql">UPDATE pers P SET P.gehalt = P.gehalt * 1.05 WHERE (P.chefID IS NOT NULL OR gehalt <p><strong>原因:</strong></p><p>MySQL 不允许在子查询中引用正在更新的同一表。</p><p><strong>解决方案:</strong></p><p>要解决此问题,请将外部表引用(pers)在子查询中用嵌套子查询括起来:</p> ```sql UPDATE pers P SET P.gehalt = P.gehalt * 1.05 WHERE (P.chefID IS NOT NULL OR gehalt <p><strong>说明:</strong></p><p>通过使用 `SELECT * FROM pers` 创建嵌套子查询,我们隐式地创建了一个临时表,可以在子查询中引用它,而不会违反 MySQL 的限制。这允许我们使用所需的条件更新 `pers` 表。</p></code>
개선된 솔루션(보다 명확한 예):
솔루션을 더 명확하게 설명하기 위해 하위 쿼리 대신 JOIN 문을 사용할 수 있습니다.
<code class="language-sql">UPDATE pers p INNER JOIN (SELECT chefID, gehalt FROM pers) AS subquery ON p.chefID = subquery.chefID AND p.gehalt = subquery.gehalt SET p.gehalt = p.gehalt * 1.05 WHERE p.chefID IS NOT NULL OR p.gehalt < ...;</code>
이 방법은 하위 쿼리에서 pers
테이블을 직접 참조하지 않으므로 MySQL 제한 사항을 우회합니다. subquery
임시 테이블 역할을 하여 안전한 업데이트 작업이 가능합니다. 실제 WHERE
상태를 토대로 ...
부분을 보완해야 한다는 점 참고하세요.
위 내용은 MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!