gpt4 book ai didi

mysql - UPDATE 比等效的 SELECT 影响更少的行

转载 作者:行者123 更新时间:2023-11-29 04:49:19 24 4
gpt4 key购买 nike

以下查询返回 2303 行:

SELECT a.* 
FROM cur_analises a
INNER JOIN cur_materias_subsidiarias ms
ON ms.materia_id = a.materia_id
AND ms.subsidiaria_id IN(SELECT id FROM cur_subsidiarias WHERE cliente_id = 134)
INNER JOIN cur_materias m
ON m.id = a.materia_id
INNER JOIN cur_clientes c
ON c.carga_id = ms.subsidiaria_id
WHERE a.cliente_id = 134;

我需要用 cur_clientes.id 中的值更新表 cur_analises 中所有那些 2303 行的 cliente_id 字段。但是,根据 MySQL Workbench,当我尝试将该 SELECT 查询转换为以下 UPDATE 时,它只影响 2297 行:

UPDATE cur_analises a
INNER JOIN cur_materias_subsidiarias ms
ON ms.materia_id = a.materia_id
AND ms.subsidiaria_id IN(SELECT id FROM cur_subsidiarias WHERE cliente_id = 134)
INNER JOIN cur_materias m
ON m.id = a.materia_id
INNER JOIN cur_clientes c
ON c.carga_id = ms.subsidiaria_id
SET a.cliente_id = c.id
WHERE a.cliente_id = 134;

我不知道为什么它缺少 6 行。我做错了什么?

最佳答案

您可能没有在查询中的某个点加入唯一值或值集,从而导致结果集的非规范化。然后,当您进行更新时,它只会更新实际满足别名为 a 的表的连接条件的行。只有您才能知道您的查询中什么是真正的非非规范化联接并修复它们。

关于mysql - UPDATE 比等效的 SELECT 影响更少的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694730/

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