Heim >Datenbank >MySQL-Tutorial >Wie lösche ich effizient Zeilen mit nicht eindeutigen IDs in MySQL 5.0?

Wie lösche ich effizient Zeilen mit nicht eindeutigen IDs in MySQL 5.0?

DDD
DDDOriginal
2024-12-25 16:48:15404Durchsuche

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

MySQL-Abfrage zum Löschen nicht eindeutiger IDs korrigieren

Die bereitgestellte Abfrage ist in MySQL 5.0 nicht funktionsfähig. Dieser Artikel befasst sich mit diesem Problem und bietet alternative Lösungen zum Löschen von Zeilen mit nicht eindeutigen IDs in MySQL.

Ursprüngliches Problem:

DELETE FROM posts WHERE>

Erklärung:

Diese Abfrage versucht, Zeilen aus der Tabelle „posts“ zu löschen, in denen die „id“ mit der „id“ der Zeilen übereinstimmt tauchen mehrfach in der Tabelle auf. In MySQL 5.0 ist es jedoch nicht möglich, eine Unterabfrage als Bedingung in einer DELETE-Anweisung zu verwenden.

Lösungen:

1. Verwendung der IN-Klausel:

Anstatt „=" zu verwenden, ändern Sie die Bedingung in „IN", um die „id“ mit dem Ergebnissatz der Unterabfrage zu vergleichen.

DELETE FROM posts WHERE id IN (
  SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1)
)

2. Trennen Sie SELECT- und DELETE-Abfragen:

Trennen Sie die Unterabfrage (SELECT-Anweisung) von der DELETE-Anweisung und führen Sie sie nacheinander aus.

SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1) INTO @duplicate_ids;
DELETE FROM posts WHERE id IN (@duplicate_ids);

3. Verschachtelte Unterabfrage mit Aliasing:

Verschachteln Sie die Unterabfrage und aliasen Sie das Ergebnis, das in der DELETE-Anweisung verwendet werden soll.

DELETE FROM posts WHERE id IN (
  SELECT * FROM (
    SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1)
  ) AS p
)

4. Verwenden von JOINs:

Verwenden Sie JOINs, um die „ID“ der Tabelle mit der Ergebnismenge der Unterabfrage zu vergleichen.

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

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient Zeilen mit nicht eindeutigen IDs in MySQL 5.0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn