Heim > Datenbank > MySQL-Tutorial > Wie lösche ich Zeilen aus einer MySQL-Tabelle basierend auf den Ergebnissen einer Select-Anweisung?

Wie lösche ich Zeilen aus einer MySQL-Tabelle basierend auf den Ergebnissen einer Select-Anweisung?

Barbara Streisand
Freigeben: 2024-12-26 14:25:10
Original
704 Leute haben es durchsucht

How to Delete Rows from a MySQL Table Based on a Select Statement's Results?

Löschen aus einer Select-Anweisung in MySQL

Frage:

Wie lösche ich Zeilen aus einer MySQL-Tabelle basierend auf die Ergebnisse einer Select-Anweisung?

Code (MySQL 5.0):

DELETE FROM posts where>
Nach dem Login kopieren

Problem:

Der obige Code funktioniert in MySQL 5.0 nicht und Sie möchten eine funktionierende Lösung finden. Ihr Ziel ist es, Zeilen zu löschen, die keine eindeutigen IDs haben.

Antwort:

Verwendung von IN:

In MySQL Unterabfragen geben Ergebnismengen zurück. Um die Ergebnisse einer Unterabfrage in einer DELETE-Anweisung zu verwenden, sollten Sie in Ihrer WHERE-Klausel den IN-Operator anstelle des Gleichheitszeichens (=) verwenden.

Geänderter Code:

DELETE FROM posts WHERE id IN (
    SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
Nach dem Login kopieren

Zusätzliche Überlegungen:

  • Sie können nicht dieselbe Tabelle von ändern eine Unterabfrage innerhalb derselben Abfrage.
  • Sie können separate SELECT- und DELETE-Abfragen ausführen oder verschachtelte Unterabfragen verwenden, um das gewünschte Ergebnis zu erzielen.
  • Ein alternativer Ansatz besteht in der Verwendung von Joins, wie von Mchl vorgeschlagen:
DELETE FROM posts p1
WHERE p1.id = (
    SELECT p2.id 
    FROM posts p2
    WHERE p2.id = p1.id
    GROUP BY p2.id
    HAVING COUNT(p2.id) > 1
)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lösche ich Zeilen aus einer MySQL-Tabelle basierend auf den Ergebnissen einer Select-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage