집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 5.0에서 고유하지 않은 ID를 가진 행을 효율적으로 삭제하는 방법은 무엇입니까?
고유하지 않은 ID 삭제를 위한 MySQL 쿼리 수정
제공된 쿼리는 MySQL 5.0에서 작동하지 않습니다. 이 문서에서는 이 문제를 다루고 MySQL에서 고유하지 않은 ID가 있는 행을 삭제하는 대체 솔루션을 제공합니다.
원래 문제:
DELETE FROM posts WHERE>
설명:
이 쿼리는 "id"가 "posts" 테이블에서 일치하는 행을 삭제하려고 시도합니다. 테이블에 두 번 이상 나타나는 행의 "id"입니다. 그러나 MySQL 5.0에서는 DELETE 문의 조건으로 하위 쿼리를 사용할 수 없습니다.
해결책:
1. IN 절 사용:
"="를 사용하는 대신 조건을 "IN"으로 변경하여 "id"를 하위 쿼리의 결과 집합과 비교합니다.
DELETE FROM posts WHERE id IN ( SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1) )
2. SELECT, DELETE 쿼리 분리:
DELETE 문에서 서브 쿼리(SELECT 문)를 분리하여 순차적으로 실행합니다.
SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1) INTO @duplicate_ids; DELETE FROM posts WHERE id IN (@duplicate_ids);
3. 별칭을 사용한 중첩된 하위 쿼리:
DELETE 문에 사용할 하위 쿼리를 중첩하고 결과에 별칭을 지정합니다.
DELETE FROM posts WHERE id IN ( SELECT * FROM ( SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1) ) AS p )
4. JOIN 사용:
JOIN을 사용하여 테이블의 "id"를 하위 쿼리의 결과 집합과 비교합니다.
DELETE a.id FROM posts AS a JOIN ( SELECT id, COUNT(*) AS num FROM posts GROUP BY id HAVING num > 1 ) AS b ON a.id = b.id
위 내용은 MySQL 5.0에서 고유하지 않은 ID를 가진 행을 효율적으로 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!