gpt4 book ai didi

mysql - SQL更新具有重复信息的数据

转载 作者:行者123 更新时间:2023-11-30 00:12:58 25 4
gpt4 key购买 nike

所以我已经研究这个查询一段时间了,出于某种原因,每当我运行它时,它都会尝试更新两个表中已经相等的某些字段。例如,以这两个表为例:

AlldataTable
first__last__age__number
K____ D __ 17____ 7
K____ D __ 15____ 7
X____ X___ 12 ____21

NewDataTable
first__last__age__number
K____ D __ 17____ 7
K____ D __ 15____ 7
X____ X___ 13 ____22

所以这里的目标是在执行查询时将 x x 的年龄字段更新为 13,将数字字段更新为 22。但是,当我执行代码时,它会说它将更新所有三个条目,而实际上应该只更新第三个条目。

UPDATE AllDataTable
LEFT JOIN NewDataTable ON (AllDataTable.first = NewDataTable.first)
AND (AllDataTable.last = NewDataTable.last)

SET AllDataTable.age = NewDataTable.age
,AllDataTable.number = NewDataTable.number
WHERE (
AllDataTable.age <> NewDataTable.age
OR AllDataTable.number <> NewDataTable.number
)
AND AllDataTable.first = NewDataTable.first
AND AllDataTable.last = NewDataTable.last;

最佳答案

这是因为 firstlast 中的值重复。数据库发现 WHERE 子句有 3 次命中:

  • Alldata 第一行与 NewData 第二行。
  • Alldata 第二行与 NewData 第一行相对。
  • Alldata 第三行与 NewData 第三行。

这看起来只更改了一行,但受影响的行数为三,因为除了更新的第三行之外,第一行和第二行实际上交换了所有内容。

关于mysql - SQL更新具有重复信息的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com