>데이터 베이스 >MySQL 튜토리얼 >MySQL 5.0에서 고유하지 않은 ID를 가진 행을 효율적으로 삭제하는 방법은 무엇입니까?

MySQL 5.0에서 고유하지 않은 ID를 가진 행을 효율적으로 삭제하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-25 16:48:15404검색

How to Efficiently Delete Rows with Non-Unique IDs in MySQL 5.0?

고유하지 않은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.