【发布时间】:2012-11-21 14:18:51
【问题描述】:
以下查询返回 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 行。我做错了什么?
【问题讨论】:
-
其中六行是否已经具有您要设置的值?
-
不,它们是
auto_increment在上一个查询中生成的新id。
标签: mysql join sql-update