首頁 > 資料庫 > mysql教程 > 如何使用自連線複製表中的資料?

如何使用自連線複製表中的資料?

Linda Hamilton
發布: 2024-11-20 11:29:02
原創
878 人瀏覽過

How to Copy Data Within a Table Using Self-Join?

在表中複製資料

在關聯式資料庫中,將資料從同一表中的一行複製到另一行通常很有用。本文探討了一種使用同一表中不同行的資料來更新行值的方法。

考慮具有以下結構的表:

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

目標是更新從具有相同“NAME”的另一行獲取值來查找“VALUE”列中缺少值的行的值。預期輸出:

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

解決方案涉及自連接。使用暫存資料表只儲存非空白行,我們可以更新原始資料表:

UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE
                        FROM data_table
                       WHERE VALUE IS NOT NULL AND VALUE != '') t1
   SET t.VALUE = t1.VALUE
 WHERE t.ID = t1.ID
   AND t.NAME = t1.NAME
登入後複製

說明:

  • 子查詢(SELECT DISTINCT ID, NAME, VALUE... ) 建立一個暫存表t1,其中僅包含非空值
  • 然後UPDATE 語句將t 與t1 的ID 和NAME 欄位連接起來。
  • 如果值符合且t 中的VALUE 列為空,則會使用來自的對應VALUE 進行更新t1.

已更新查詢:

可以細化提供的解決方案以實現所需的輸出:

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

以上是如何使用自連線複製表中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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