从同一表中的匹配行更新表行值
在表包含非唯一 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中文网其他相关文章!