>데이터 베이스 >MySQL 튜토리얼 >MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 수정하려면 어떻게 해야 합니까?

MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 수정하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 16:11:11859검색

How Can I Fix MySQL Error 1093:

MySQL 오류 1093 극복: FROM 절에 지정된 테이블 업데이트

MySQL 오류 1093은 다음에서도 사용되는 테이블을 업데이트하려고 할 때 발생합니다. 동일한 쿼리의 FROM 절. 이 오류를 해결하려면 다음 접근 방식을 고려하십시오.

테이블 자체에 조인

가능한 경우 적절한 선택 기준을 사용하여 테이블을 자체에 조인합니다. 이를 통해 MySQL은 테이블을 별도의 엔터티로 볼 수 있으며 파괴적인 수정이 가능합니다.

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col

FROM 절에 하위 쿼리를 더 깊게 중첩

대안으로 중첩 암시적 임시 생성을 위해 FROM 절에 더 깊은 하위 쿼리 테이블:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);

그러나 이 방법은 효율성이 떨어지며 특정 버전의 MySQL 쿼리 최적화 프로그램에 의해 제대로 최적화되지 않을 수 있습니다.

쿼리 최적화 프로그램 비활성화

MySQL 버전 5.7.6 이상에서는 최적화 프로그램이 하위 쿼리 전략을 방지할 수 있습니다. 최적화를 일시적으로 비활성화하려면 Optimizer_switch 변수를 설정하십시오.

SET optimizer_switch = 'derived_merge=off';

삭제 쿼리 예시

질문에 제공된 특정 쿼리를 해결하려면 story_category 테이블을 손상된 항목을 식별하고 삭제하는 카테고리 테이블:

DELETE t1
FROM story_category AS t1
INNER JOIN category AS t2
ON t1.category_id = t2.id
WHERE t2.id IS NULL;

결론적으로 다음을 사용하여 이러한 기술을 사용하면 "FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다." 오류를 극복하고 데이터베이스 테이블에 필요한 수정을 수행할 수 있습니다.

위 내용은 MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.