使用同表兄弟的數據更新行
設想一個具有類似於以下結構的表:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | NULL |
4 | Test | NULL |
1 | Test3 | VALUE3 |
您的任務是使用具有相同“NAME”的其他行的資料填充NULL「VALUE」儲存格(即「Test」和「Test2」應該繼承其前身的值)。期望的結果是:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
挑戰在於引用同一表中共享特定「NAME」值的行。解決方案涉及使用 JOIN 語句:
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
在此語句中,子查詢 (T1) 提取具有非 NULL 和非空「VALUE」值的不同行。然後,主查詢 (t) 在「ID」和「NAME」欄位上與此子查詢連接,以識別要更新的行。因此,空的「VALUE」儲存格將填入具有相同「NAME」值的非空白行中的對應值。
以上是如何使用共享相同名稱的行中的資料更新表中的 NULL 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!