Select 문을 사용하여 MySQL에서 고유하지 않은 행 삭제
제공된 쿼리 구문
DELETE FROM post>는 다음을 시도합니다. post 테이블에서 고유 ID가 없는 행을 삭제합니다. 그러나 이 구문은 MySQL 5.0과 호환되지 않습니다.</p> <p><strong>쿼리 다시 작성</strong></p> <p>쿼리를 MySQL 5.0과 호환되게 하려면 다음과 같이 다시 작성해야 합니다.</p> <p>`<사전>ID가 IN인 게시물에서 삭제 (</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
`
수정된 쿼리 이해
수정된 쿼리는 IN 연산자를 사용하여 다음을 수행합니다. post 테이블의 id 열을 하위 쿼리의 결과 집합과 비교합니다. 하위 쿼리는 post 테이블에서 고유하지 않은 ID를 나타내는 두 번 이상 발생하는 행의 ID를 검색합니다. IN 연산자를 사용하면 쿼리는 고유하지 않은 ID가 있는 행만 삭제 대상으로 선택합니다.
추가 고려 사항
답변 참조에서 언급했듯이 필수입니다. MySQL은 동일한 쿼리 내의 하위 쿼리에서 동일한 테이블을 수정하는 것을 허용하지 않습니다. 이 제한을 피하기 위해 쿼리를 두 개의 개별 쿼리로 분할할 수 있습니다. 즉, 삭제할 행을 식별하는 SELECT 쿼리와 삭제를 실행하는 DELETE 쿼리입니다. 또는 별칭이 포함된 중첩 하위 쿼리를 사용하여 단일 쿼리 내에서 삭제할 수 있습니다.
위 내용은 MySQL 5.0에서 고유하지 않은 행을 효율적으로 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!