SQL 테이블에서 분리된 항목을 삭제합니다. 일반적인 상황은 다른 테이블에서 일치하는 행이 누락된 테이블의 행을 식별하는 것입니다. 다음 사항을 고려하세요.
두 개의 테이블이 있습니다.
fileid 및 id 열을 사용하여 테이블을 조인할 수 있습니다. 목표는 files.id 테이블에서 fileid를 찾을 수 없는 테이블 Blob의 모든 행을 삭제하는 것입니다.
이 작업에는 세 가지 주요 방법이 있습니다.
LEFT JOIN/IS NULL 사용:
<code class="language-sql">DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid WHERE f.id IS NULL</code>
NOT EXISTS 사용:
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL FROM FILES f WHERE f.id = fileid)</code>
NOT IN 사용:
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f)</code>
경고:
DELETE 작업을 수행할 때는 항상 트랜잭션 내에서 수행되는지 확인하세요. 이를 통해 오류가 발생할 경우 변경 사항을 롤백하여 데이터 손실 위험을 최소화할 수 있습니다.
위 내용은 LEFT JOIN, NOT EXISTS 또는 NOT IN을 사용하여 SQL에서 고아 행을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!