MySQL: Verwenden von LIMIT zum Aktualisieren mehrerer Zeilen
In MySQL können Sie mit der LIMIT-Klausel die Anzahl der von einer Abfrage betroffenen Zeilen einschränken . Bei der Verwendung von LIMIT mit der UPDATE-Anweisung tritt jedoch ein häufiger Fehler auf, wenn versucht wird, einen bestimmten Zeilenbereich zu aktualisieren.
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 zu aktualisieren Zeilen, beginnend mit der fünften Zeile, in der Tabelle „Nachrichten“, wobei „Benutzer-ID“ gleich „xyz“ ist. Diese Abfrage führt jedoch zu einem Fehler.
Um zu verstehen, warum, ist es wichtig zu beachten, dass die LIMIT-Klausel in diesem Kontext einen Offset und eine maximale Anzahl von Zeilen definiert. In diesem Beispiel wird die Anzahl der angezeigten Zeilen abgerufen und begrenzt, anstatt sie zu aktualisieren. Um einen bestimmten Zeilenbereich zu aktualisieren, kann stattdessen eine Unterabfrage verwendet werden:
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 );
In dieser modifizierten Abfrage wird eine Unterabfrage verwendet, um die IDs der fünf Zeilen auszuwählen, die aktualisiert werden müssen. Die Haupt-UPDATE-Anweisung gleicht dann diese IDs ab und führt die Aktualisierung durch. Dadurch wird sichergestellt, dass nur die gewünschten Zeilen geändert werden.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich einen bestimmten Zeilenbereich in MySQL mithilfe von LIMIT korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!