Heim >Datenbank >MySQL-Tutorial >Wie lösche ich einen Zeilenbereich mit LIMIT in der MySQL-DELETE-Anweisung?
Korrektur der Syntax für die MySQL-DELETE-Anweisung mit LIMIT
Beim Versuch, einen Zeilenbereich aus einer MySQL-Tabelle mithilfe einer DELETE-Anweisung mit zu löschen Wenn Sie eine LIMIT-Klausel verwenden, kann es zu einem Fehler kommen, wenn die Syntax falsch ist. Dieser Fehler weist normalerweise darauf hin, dass ein Problem mit der Syntax zur Angabe des Grenzwerts vorliegt.
Das Problem in der bereitgestellten Abfrage besteht darin, dass Sie in der LIMIT-Klausel einer DELETE-Anweisung keinen Offset angeben können. Die Syntax für die Verwendung der LIMIT-Klausel in einer DELETE-Anweisung lautet LIMIT
Um dieses Problem zu beheben, müssen Sie Ihre Abfrage neu schreiben, um die zu bearbeitenden Zeilen anzugeben genauer gelöscht. Eine Möglichkeit, dies zu tun, besteht darin, die IN-Klausel zu verwenden, um die IDs der Zeilen auszuwählen, die Sie löschen möchten, und diese IDs dann zum Filtern der Zeilen in der DELETE-Anweisung zu verwenden.
Hier ist ein Beispiel dafür, wie Sie umschreiben können Ihre Abfrage:
<code class="sql">DELETE FROM `chat_messages` WHERE `id` IN ( SELECT `id` FROM ( SELECT `id` FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50 ) AS `x` )</code>
In dieser Abfrage verwenden wir zunächst eine Unterabfrage, um die IDs der Zeilen auszuwählen, die wir löschen möchten. Dann verwenden wir die IN-Klausel in der DELETE-Hauptanweisung, um die Zeilen basierend auf diesen IDs zu filtern, was zur Löschung des gewünschten Zeilenbereichs führt.
Es ist wichtig zu beachten, dass Sie möglicherweise Anpassungen vornehmen müssen Die Abfrage basiert auf der spezifischen Struktur Ihrer Tabelle und dem gewünschten Verhalten.
Das obige ist der detaillierte Inhalt vonWie lösche ich einen Zeilenbereich mit LIMIT in der MySQL-DELETE-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!