> 데이터 베이스 > MySQL 튜토리얼 > MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 해결하는 방법은 무엇입니까?

MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 해결하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-17 06:12:24
원래의
358명이 탐색했습니다.

How to Resolve MySQL Error 1093:

MySQL 오류 1093 극복: "FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다."

MySQL 오류 1093이 발생하는 경우 중요합니다. 근본적인 문제를 이해하는 것입니다. 이 오류는 쿼리의 FROM 절에서도 참조되는 테이블을 수정하려고 할 때 발생합니다.

근본 원인

MySQL에서는 테이블을 동시에 수정하는 것을 허용하지 않습니다. UPDATE 또는 DELETE 문의 FROM 절에 사용됩니다. 이러한 제한은 두 작업에 대해 동일한 테이블에 액세스할 때 발생할 수 있는 모호성 때문입니다.

해결책 1: 하위 쿼리 사용

한 가지 해결 방법은 SELECT를 포함하는 것입니다. UPDATE 또는 DELETE의 FROM 절에 있는 하위 쿼리로 손상된 항목을 식별하는 문 명령문:

UPDATE story_category SET category_id = NULL
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
로그인 후 복사

해결책 2: 테이블 자체 조인

또는 테이블을 자체 조인하여 동일한 테이블에 대해 별도의 별칭을 생성할 수 있습니다. 별칭 중 하나를 수정하면서 다른 별칭을 참조할 수 있습니다. 예:

UPDATE story_category AS updated
INNER JOIN story_category AS original
    ON updated.category_id = original.category_id
SET updated.category_id = NULL
WHERE original.category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
로그인 후 복사

재발 방지

손상된 항목이 삭제되면 story_category 테이블에 제약 조건을 구현하여 향후 잘못된 항목을 방지하는 것이 좋습니다.

ALTER TABLE story_category
ADD FOREIGN KEY (category_id) REFERENCES category(id);
로그인 후 복사

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿