Löschen nicht eindeutiger Zeilen in MySQL mithilfe einer Select-Anweisung
Die bereitgestellte Abfragesyntax
DELETE FROM posts where> versucht dies Löschen Sie Zeilen, die keine eindeutigen IDs haben, aus der Beitragstabelle. Diese Syntax ist jedoch nicht mit MySQL 5.0 kompatibel.</p> <p><strong>Umschreiben der Abfrage</strong></p> <p>Um die Abfrage mit MySQL 5.0 kompatibel zu machen, sollte sie wie folgt umgeschrieben werden:</p> <p>`<pre class="brush:php;toolbar:false">DELETE FROM posts WHERE 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 )
)
`
Die überarbeitete Abfrage verstehen
Die überarbeitete Abfrage verwendet den IN-Operator, um Vergleichen Sie die ID-Spalte der Posts-Tabelle mit der Ergebnismenge der Unterabfrage. Die Unterabfrage ruft die IDs von Zeilen ab, die mehr als einmal in der Beitragstabelle vorkommen, was auf nicht eindeutige IDs hinweist. Durch die Verwendung des IN-Operators wählt die Abfrage nur die Zeilen mit nicht eindeutigen IDs zum Löschen aus.
Zusätzliche Überlegungen
Wie in der Antwortreferenz erwähnt, ist dies unerlässlich Beachten Sie, dass MySQL das Ändern derselben Tabelle aus einer Unterabfrage innerhalb derselben Abfrage nicht zulässt. Um diese Einschränkung zu umgehen, kann die Abfrage in zwei separate Abfragen aufgeteilt werden: eine SELECT-Abfrage zur Identifizierung der zu löschenden Zeilen, gefolgt von einer DELETE-Abfrage zum Ausführen des Löschvorgangs. Alternativ kann eine verschachtelte Unterabfrage mit einem Alias verwendet werden, um das Löschen innerhalb einer einzelnen Abfrage zu ermöglichen.
Das obige ist der detaillierte Inhalt vonWie lösche ich nicht eindeutige Zeilen in MySQL 5.0 effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!