從同一表中的匹配行更新表行值
在表包含非唯一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) 來比較資料並辨識符合更新條件的行:
因此,查詢使用dt2 中的匹配資料更新dt1 中的值,從而有效地填滿“NAME”匹配的行中的空白儲存格。這種方法允許在同一個表中無縫更新行值,解決了最初的挑戰。
以上是如何從同一表中的符合行更新表行值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!