Heim >Datenbank >MySQL-Tutorial >## Wie kann ich MySQL-Zeilen in einem einzigen Vorgang ohne Unterabfragen abrufen und aktualisieren?
Abfrage zum Abrufen und Aktualisieren von MySQL-Zeilen in einem einzigen Vorgang
Das Kombinieren von SELECT- und UPDATE-Abfragen in einem einzigen Vorgang kann die Effizienz steigern und Code reduzieren Komplexität. In diesem Artikel wird eine Lösung untersucht, um dieses Ziel ohne die Verwendung von Unterabfragen zu erreichen.
Rätsel
Ein Benutzer suchte Hilfe bei der Kombination der folgenden MySQL-Abfragen:
SELECT * FROM table WHERE group_id = 1013 and time > 100;
UPDATE table SET time = 0 WHERE group_id = 1013 and time > 100
Das Hauptziel bestand darin, die gewünschten Zeilen abzurufen und gleichzeitig ihr „Zeit“-Feld auf Null zu aktualisieren.
Geniale Lösung
Die Lösung beinhaltet die Verwendung von gespeicherten Zeilen Verfahren, um das gewünschte Ergebnis zu erzielen. Gespeicherte Prozeduren kapseln eine Reihe von SQL-Anweisungen und können als Einheit ausgeführt werden.
Die folgende Prozedur namens „update_and_retrieve“ führt die Aufgabe aus:
<code class="mysql">CREATE PROCEDURE update_and_retrieve(IN group_id INT, IN time INT) BEGIN DECLARE updated_ids VARCHAR(255); UPDATE table SET time = 0 WHERE group_id = group_id AND time > time; SET updated_ids = (SELECT GROUP_CONCAT(fooid) FROM table WHERE group_id = group_id AND time > time); SELECT * FROM table WHERE fooid IN (updated_ids); END;</code>
Prozeduraufruf
Um die gespeicherte Prozedur aufzurufen, führen Sie einfach die folgende Anweisung aus:
<code class="mysql">CALL update_and_retrieve(1013, 100);</code>
Dadurch wird das Feld „Zeit“ für die qualifizierten Zeilen auf Null aktualisiert und dann werden diese aktualisierten Zeilen abgerufen und angezeigt.
Vorteile
Dieser Ansatz bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt von## Wie kann ich MySQL-Zeilen in einem einzigen Vorgang ohne Unterabfragen abrufen und aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!