Heim >Datenbank >MySQL-Tutorial >Warum unterstützt die „UPDATE'-Anweisung von MySQL keine zweiteilige „LIMIT'-Klausel?
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!