首页 >数据库 >mysql教程 >如何从同一表中的匹配行更新表行值?

如何从同一表中的匹配行更新表行值?

Linda Hamilton
Linda Hamilton原创
2024-11-18 01:38:02500浏览

How to Update Table Row Values from Matching Rows in the Same Table?

从同一表中的匹配行更新表行值

在表包含非唯一 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) 来比较数据并识别符合更新条件的行:

  • WHERE 子句筛选 dt1.NAME 与 dt2.NAME 匹配的行,指示具有相同“NAME”值的行。
  • 它还会检查 dt1.VALUE 为空 ('') 的行,表示需要更新的记录。
  • 最后,dt2.VALUE 不为空,确保更新仅发生在具有有效值的行中

因此,查询使用 dt2 中的匹配数据更新 dt1 中的值,从而有效地填充“NAME”匹配的行中的空单元格。这种方法允许在同一个表中无缝更新行值,解决了最初的挑战。

以上是如何从同一表中的匹配行更新表行值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn