Heim  >  Artikel  >  Datenbank  >  ## Wie kann ich MySQL-Zeilen in einem einzigen Vorgang ohne Unterabfragen abrufen und aktualisieren?

## Wie kann ich MySQL-Zeilen in einem einzigen Vorgang ohne Unterabfragen abrufen und aktualisieren?

Susan Sarandon
Susan SarandonOriginal
2024-10-25 02:26:30732Durchsuche

## How to Retrieve and Update MySQL Rows in a Single Operation Without Subqueries?

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:

  • Vermeidet unnötige Netzwerk-Roundtrips durch die Kombination mehrerer Vorgänge in einem einzigen Anruf.
  • Vereinfacht die Codestruktur, da keine separaten Abfragen mehr erforderlich sind.
  • Verbessert die Leistung durch Reduzierung der Datenbanklast.

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!

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