首頁 > 資料庫 > mysql教程 > 如何從同一表中的符合行更新表行值?

如何從同一表中的符合行更新表行值?

Linda Hamilton
發布: 2024-11-18 01:38:02
原創
498 人瀏覽過

How to Update Table Row Values from Matching Rows in the Same Table?

從同一表中的匹配行更新表行值

在表包含非唯一ID 和所需的複合鍵的情況下行唯一性,使用同一表中其他行的資料更新行值可能會帶來挑戰。考慮以下場景:

給定一個包含以下資料的表:

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2
4 Test
1 Test3 VALUE3

目標是使用其他行的資料更新“Test2”和“Test”的值相同的“NAME” (ID 對於行標識來說不是唯一的)。預期輸出應為:

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2 VALUE2
4 Test VALUE1
1 Test3 VALUE3

要解決此挑戰,您可以利用以下查詢:

UPDATE data_table dt1, data_table dt2
SET dt1.VALUE = dt2.VALUE
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
登入後複製

此查詢依賴同一表的兩個實例(data_table 別名為dt1 和dt2) 來比較資料並辨識符合更新條件的行:

  • WHERE 子句過濾行其中dt1.NAME 與 dt2.NAME 匹配,表示具有相同“NAME”值的行。
  • 它也會檢查 dt1.VALUE 為空 ('') 的行,表示需要更新的記錄。
  • 最後,dt2.VALUE 非空,確保更新僅發生在有效的行中

因此,查詢使用dt2 中的匹配資料更新dt1 中的值,從而有效地填滿“NAME”匹配的行中的空白儲存格。這種方法允許在同一個表中無縫更新行值,解決了最初的挑戰。

以上是如何從同一表中的符合行更新表行值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板