在表中複製資料
在關聯式資料庫中,將資料從同一表中的一行複製到另一行通常很有用。本文探討了一種使用同一表中不同行的資料來更新行值的方法。
考慮具有以下結構的表:
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
說明:
已更新查詢:
可以細化提供的解決方案以實現所需的輸出:
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
以上是如何使用自連線複製表中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!