gpt4 book ai didi

mysql - 使用 INNER JOIN 的 UPDATE 未更新

转载 作者:行者123 更新时间:2023-11-29 10:04:52 25 4
gpt4 key购买 nike

我正在尝试将影响值从旧表 (esp) 转移到新表 (esm)。两个表具有相似的结构:

esp
+--------+------+----------------------------
|codeNorm|impact|Other columns i dont care...
+--------+------+----------------------------

esm
+--------------+------+--------------------------------------
|codeMasterNorm|impact|Other different columns i dont care...
+--------------+------+--------------------------------------

首先,我创建了一个 SELECT 查询,该查询仅带来它们之间具有不同影响的记录(影响可以为 NULL):

SELECT esm.codeMasterNorm, esm.impact, esp.codeNorm, esp.impact FROM esm
INNER JOIN esp ON esp.codeNorm = esm.codeMasterNorm AND IFNULL(esp.impact, 0) <> IFNULL(esm.impact, 0);

返回:

163 rows in set (0.75 sec)

然后我创建了 UPDATE/INNER JOIN 查询

UPDATE esm
INNER JOIN esp ON esp.codeNorm = esm.codeMasterNorm AND IFNULL(esp.impact, 0) <> IFNULL(esm.impact, 0)
SET esm.impact = esp.impact;

返回:

Query OK, 163 rows affected (1.35 sec) Rows matched: 163 Changed: 163 Warnings: 0

但是当我再次重新运行 SELECT 查询时,会返回相同的结果:

163 rows in set (1.25 sec)

有什么想法为什么不更新记录吗?

最佳答案

执行 UPDATE JOIN 查询时;如果连接不是 1:1,则未定义分配值的来源。

在这种特殊情况下,虽然由于 a.x != b.x 条件,连接在技术上是 1:1,但更新创建了不同的连接对。在没有该条件的情况下假设的 1:1 是不正确的。

关于mysql - 使用 INNER JOIN 的 UPDATE 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52120842/

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