Heim >Datenbank >MySQL-Tutorial >Warum unterstützt die „UPDATE'-Anweisung von MySQL keine zweiteilige „LIMIT'-Klausel?

Warum unterstützt die „UPDATE'-Anweisung von MySQL keine zweiteilige „LIMIT'-Klausel?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 21:19:19322Durchsuche

Why Doesn't MySQL's `UPDATE` Statement Support a Two-Part `LIMIT` Clause?

MySQL: Schwierigkeiten mit LIMIT bei Aktualisierungen mehrerer Zeilen

In MySQL können beim Versuch, mehrere Zeilen mithilfe der LIMIT-Klausel zu aktualisieren, Fehler auftreten. Betrachten Sie die folgende Abfrage:

UPDATE messages SET test_read=1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5, 5;

Diese Abfrage zielt darauf ab, fünf Zeilen basierend auf der bereitgestellten Bedingung zu aktualisieren, wobei die ersten fünf Zeilen übersprungen werden (LIMIT 5, 5). Dies führt jedoch zu einem Fehler.

Die Arbeitsversion der Abfrage ohne die zweite LIMIT-Klausel (LIMIT 5) aktualisiert erfolgreich die ersten fünf Zeilen, die die Bedingung erfüllen. Der Fehler tritt auf, weil MySQL die Angabe eines zweiten LIMIT innerhalb einer Update-Anweisung nicht zulässt.

Empfohlene Alternative

Um diese Einschränkung zu umgehen, wird eine Problemumgehung empfohlen:

UPDATE messages SET test_read=1
WHERE id IN (
SELECT id FROM (
SELECT id FROM messages
ORDER BY date_added DESC
LIMIT 5, 5
) tmp
);

Diese Abfrage erzielt das gleiche Ergebnis, indem sie zunächst die gewünschten Zeilen mithilfe einer Unterabfrage identifiziert und dann die entsprechenden Zeilen basierend auf dem ID-Feld aktualisiert. Diese Methode ermöglicht eine präzise Zeilenauswahl und Aktualisierung in MySQL.

Das obige ist der detaillierte Inhalt vonWarum unterstützt die „UPDATE'-Anweisung von MySQL keine zweiteilige „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