집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 여러 테이블에서 레코드를 올바르게 삭제하는 방법은 무엇입니까?
MySQL 다중 테이블 레코드 삭제 스킬
여러 MySQL 테이블에서 레코드를 동시에 삭제하는 것은 복잡한 작업입니다. 여러 테이블 참조가 포함된 WHERE 절과 함께 DELETE 문을 직접 사용하는 것은 일반적으로 실패합니다. 예를 들어 다음 코드는 다음과 같습니다.
<code class="language-sql">DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`</code>
일반적으로 다음과 같은 오류가 발생합니다.
잡히지 않은 Database_Exception [1064]: SQL 구문에 오류가 있습니다. 'p,pets_activitiespa...' 근처에서 사용할 수 있는 올바른 구문은 MySQL 서버 버전에 해당하는 설명서를 확인하세요.
올바른 접근 방식은 JOIN 키워드를 사용하는 것입니다. 수정된 코드는 다음과 같습니다.
<code class="language-sql">DELETE p, pa FROM pets p JOIN pets_activities pa ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
pets_activities
테이블의 레코드만 삭제하려는 경우 다음 코드를 사용할 수 있습니다.
<code class="language-sql">DELETE pa FROM pets_activities pa JOIN pets p ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
이러한 방법을 사용하면 MySQL의 여러 테이블에서 레코드를 효과적으로 삭제할 수 있습니다. 물론 참조 무결성과 관련된 단일 테이블 삭제 방법으로는 EXISTS, NOT EXISTS, IN, NOT IN 등이 있습니다. 그러나 위의 MySQL 구문은 특히 복잡한 삭제 시나리오를 처리할 때 다중 테이블 삭제에 대한 일반적인 솔루션을 제공합니다.
위 내용은 MySQL의 여러 테이블에서 레코드를 올바르게 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!