Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie erreicht man Zeilenaktualisierungen und -abrufe in einer einzigen MySQL-Abfrage?

Mary-Kate Olsen
Freigeben: 2024-10-24 19:48:29
Original
460 Leute haben es durchsucht

How to Achieve Row Updates and Retrieval in a Single MySQL Query?

Zeilenaktualisierungen und -abrufe in einer einzigen MySQL-Abfrage erreichen

In MySQL kann die Ausführung mehrerer Abfragen zeitaufwändig sein. Um die Leistung zu optimieren, ist es wünschenswert, Abfragen zu einer einzigen Abfrage zusammenzufassen. Dies ist der Kern einer von Quan gestellten Abfrage: Können zwei Abfragen zusammengeführt werden, um aktualisierte Zeilen zurückzugeben?

Die erste Abfrage wählt Zeilen aus einer Tabelle basierend auf bestimmten Kriterien aus, während die zweite Abfrage Zeilen aktualisiert, die dieselben Kriterien erfüllen. Das Kombinieren dieser Abfragen erfordert eine Technik, die sowohl Lesen als auch Schreiben in einem einzigen Vorgang ermöglicht.

Ein Ansatz besteht darin, eine Unterabfrage zu verwenden. Allerdings stieß Quan bei dieser Methode auf Einschränkungen. Eine alternative Lösung ergab sich aus einer Empfehlung von https://gist.github.com/PieterScheffers/189cad9510d304118c33135965e9cddb:

SET @uids := null;
UPDATE footable
   SET foo = 'bar'
 WHERE fooid > 5
   AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;
Nach dem Login kopieren

Diese Abfrage nutzt die folgenden Schritte:

  1. Eine Variable initialisieren (@uids) auf null.
  2. Verwenden Sie eine UPDATE-Anweisung, um Zeilen zu ändern, die die Kriterien erfüllen, und hängen Sie gleichzeitig ihre fooid-Werte an @uids an, um eine durch Kommas getrennte Liste zu erstellen.
  3. Führen Sie eine SELECT-Anweisung aus um den aktualisierten @uids-Wert abzurufen, der die Liste der aktualisierten Zeilen-Foid-Werte enthält.

Diese Lösung kombiniert effizient sowohl Zeilenaktualisierungen als auch den Abruf und stellt die gewünschte Funktionalität in einer einzigen Abfrage bereit.

Das obige ist der detaillierte Inhalt vonWie erreicht man Zeilenaktualisierungen und -abrufe in einer einzigen MySQL-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!