Heim >Datenbank >MySQL-Tutorial >Können Sie MySQL UPDATE- und SELECT-Operationen in einer Anfrage kombinieren, um eine Zeile zu „besitzen' und ihre Parameter abzurufen?

Können Sie MySQL UPDATE- und SELECT-Operationen in einer Anfrage kombinieren, um eine Zeile zu „besitzen' und ihre Parameter abzurufen?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 05:10:31929Durchsuche

Can you combine MySQL UPDATE and SELECT operations into one request to

MySQL UPDATE und SELECT in einer Anfrage

Viele Worker-Anwendungen führen Aufgaben in einer Schleife aus, indem sie auf eine Aufgabentabelle in einer MySQL-Datenbank zugreifen Die nativen C-APIs von MySQL. Um eine Aufgabe zu besitzen, muss eine Anwendung:

  1. Generiert eine global eindeutige ID.
  2. Führt eine UPDATE-Abfrage aus, um das GUID-Feld auf die generierte ID für eine Zeile mit einer GUID von 0 festzulegen .
  3. Führt eine SELECT-Abfrage aus, um die Parameter der Aufgabe basierend auf der Guid abzurufen.

Gibt es eine Möglichkeit, diese Schritte effektiv in einem einzigen Aufruf an den Server zu kombinieren? „Eine Zeile besitzen“ und ihre Parameter in einem einzigen Vorgang erhalten?

Antwort:

Ja, dies ist mit einer UPDATE-Abfrage mit einer Unterabfrage möglich:

UPDATE tasks
SET guid = (
    SELECT id
    FROM tasks
    ORDER BY id DESC
    LIMIT 1
)
WHERE guid = 0
RETURNING guid, params;

Diese Abfrage aktualisiert das Guid-Feld der Zeile mit Guid 0 und verwendet dabei die höchste ID aus der Aufgabentabelle als neue Guid. Außerdem werden sowohl die aktualisierte Anleitung als auch die Parameter der Aufgabe in einer einzigen Zeile zurückgegeben.

Das obige ist der detaillierte Inhalt vonKönnen Sie MySQL UPDATE- und SELECT-Operationen in einer Anfrage kombinieren, um eine Zeile zu „besitzen' und ihre Parameter abzurufen?. 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