首頁  >  文章  >  資料庫  >  如何在單一MySQL查詢中實現行更新和檢索?

如何在單一MySQL查詢中實現行更新和檢索?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-24 19:48:29462瀏覽

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

在單一 MySQL 查詢中實作行更新和擷取

在 MySQL 中,執行多個查詢可能非常耗時。為了優化效能,最好將查詢合併為一個查詢。這是 Quan 提出的查詢的關鍵:可以合併兩個查詢以傳回更新的行嗎?

第一個查詢根據特定條件從表中選擇行,而第二個查詢則更新滿足相同條件的行。組合這些查詢需要一種允許在單一操作中進行讀取和寫入的技術。

一種方法是使用子查詢。然而,Quan 遇到了這種方法的限制。 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;

此查詢中出現了替代解決方案:

  1. 此查詢利用以下步驟:
  2. 初始化變數uids) 為null。
  3. 使用 UPDATE 語句修改符合條件的行,同時將其 fooid 值附加到 @uids,建立逗號分隔的清單。
  4. 執行 SELECT 語句以檢索更新的 @uids 值,其中包含更新的行 fooid 值的清單。

此解決方案有效地結合了行更新和檢索,在單一查詢中提供所需的功能。

以上是如何在單一MySQL查詢中實現行更新和檢索?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn