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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-17 10:59:26723검색

How Can I Resolve MySQL Error 1093: Can't Specify Target Table for Update in FROM Clause?

MySQL 오류 1093: FROM 절의 테이블 업데이트 제한 이해

MySQL 오류 "대상 테이블 'table_name을 지정할 수 없습니다. FROM 절의 업데이트에 대한 ''는 자체 SELECT 문 내에서 테이블을 수정하려고 할 때 발생합니다. 이러한 제한은 MySQL이 동일한 작업으로 테이블을 동시에 업데이트하고 참조할 수 없기 때문에 발생합니다.

오류 해결

이 문제를 극복하려면 다음 접근 방식을 고려하세요.

  • 테이블에 참여하기 자체:
    테이블에서 자체 조인을 수행하여 임시 테이블을 생성하도록 쿼리를 재정렬합니다. 이렇게 하면 원본 테이블을 업데이트할 수 있습니다.
UPDATE story_category a
INNER JOIN story_category b ON a.category_id = b.category_id
SET a.category_id = ...
  • 하위 쿼리를 더 깊게 중첩:
    다른 하위 쿼리 내에서 손상된 항목을 식별하는 하위 쿼리를 중첩합니다. 암시적 임시 생성 테이블:
UPDATE story_category
SET category_id = (
  SELECT id
  FROM (
    SELECT id
    FROM category
    EXCEPT
    SELECT DISTINCT category_id
    FROM story_category
  ) AS x
)
  • 쿼리 최적화 프로그램 비활성화:
    MySQL 버전 5.7.6 이상의 경우 최적화 프로그램이 하위 쿼리 제거를 시도할 수 있습니다. 이를 방지하려면 Optimizer_switch를 비활성화하십시오:
SET optimizer_switch = 'derived_merge=off';

참고: 쿼리 최적화 프로그램을 비활성화하는 것은 권장되는 장기적인 해결 방법이 아니며 임시 해결 방법으로만 사용해야 합니다. 보다 효율적인 데이터베이스 유지 관리를 위한 대체 접근 방식을 고려해보세요.

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

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