Heim  >  Artikel  >  Datenbank  >  Wie lösche ich einen bestimmten Zeilenbereich in MySQL mithilfe der LIMIT-Klausel?

Wie lösche ich einen bestimmten Zeilenbereich in MySQL mithilfe der LIMIT-Klausel?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 13:58:30302Durchsuche

How to Delete a Specific Range of Rows in MySQL Using LIMIT Clause?

MySQL DELETE-Anweisung mit Limit

Ein Benutzer stößt auf einen Fehler, während er versucht, Zeilen aus einer Tabelle mit der folgenden Abfrage zu löschen:

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

Die Fehlermeldung weist darauf hin, dass die Syntax falsch ist.

Erklärung

Der Fehler tritt auf, weil die hier verwendete DELETE-Anweisung einen Offset im LIMIT enthält Klausel. Dies ist in MySQL nicht zulässig. Die LIMIT-Klausel kann nur die Anzahl der zu löschenden Zeilen angeben.

Lösung

Um einen angegebenen Zeilenbereich aus einer Tabelle zu löschen, können Sie die Offset-Funktion nicht verwenden in der LIMIT-Klausel. Stattdessen müssen Sie eine Unterabfrage verwenden, um die zu löschenden Zeilen auszuwählen und sie dann mithilfe ihrer Primärschlüsselwerte zu löschen.

Die folgende Abfrage kann in diesem Szenario verwendet werden:

DELETE FROM `chat_messages`
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)

Diese Abfrage verwendet doppelte Verschachtelung, um die zu löschenden Zeilen auszuwählen und die Einschränkungen von MySQL zu umgehen.

Das obige ist der detaillierte Inhalt vonWie lösche ich einen bestimmten Zeilenbereich in MySQL mithilfe der LIMIT-Klausel?. 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