首頁 > 資料庫 > mysql教程 > 如何根據同名其他行的資料更新表中的空值?

如何根據同名其他行的資料更新表中的空值?

Barbara Streisand
發布: 2024-11-13 05:51:02
原創
322 人瀏覽過

How do I update empty values in a table based on data from other rows with the same name?

在表中的行之間複製資料

在資料庫管理中,經常需要根據表中其他行的資料來更新行同一張桌子。考慮一個包含 ID、NAME 和 VALUE 欄位的資料表,其中包含重複的 NAME 值,如下所示:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |         |
 4   |   Test    |         |
 1   |   Test3   |  VALUE3 |
登入後複製

假設我們要更新具有重複 NAME 值的行中的空 VALUE 欄位。為了實現這一點,我們可以使用引用和更新同一個表中的值的 SQL 查詢。

一種方法涉及使用帶有聯結的 UPDATE 語句。在以下查詢中,我們連接data_table 兩次,將它們別名為dt1 和dt2:

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

此查詢使用非空VALUE 標識並更新空VALUE 欄位(其中dt1.VALUE 為空)具有相同名稱的其他行(其中dt2.VALUE 不為空)。

作為替代方案,我們可以使用子查詢來識別具有非空值的行並將其連接回原始表進行更新:

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
登入後複製

這兩個查詢都將產生所所需的輸出:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |  VALUE2 |
 4   |   Test    |  VALUE1 |
 1   |   Test3   |  VALUE3 |
登入後複製

這些方法提供了操作表中資料的靈活性,可讓您根據包含同一表中其他行的條件更新值。

以上是如何根據同名其他行的資料更新表中的空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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