Bryan Agee Asked: 2011-05-27 15:40:16 +0800 CST2011-05-27 15:40:16 +0800 CST 2011-05-27 15:40:16 +0800 CST MySQL 更新:为什么行会根据 set 子句匹配更改? 772 我运行了一个连接更新一个字段的大量表的更新查询,它匹配了 29k 一些奇数行。运行相同的查询,只在 Set 子句中添加一个,将匹配的行增加到 118k 个奇数行。似乎这应该只有在编辑了 WHERE 子句时才会改变。 mysql query 1 个回答 Voted Best Answer Bryan Agee 2011-05-27T15:55:11+08:002011-05-27T15:55:11+08:00 我想我只是想通了... MySQL 必须计算将要更新的行数,而不是更新期间发生的连接生成的所有行数。不同之处在于,如果有多个 [B] 对一个 [A],并且有多个 [C] 对一个 [B],则加入所有将创建 n([C]) 行,但更新 [B] 只会计数 n( [B]). 为 [C] 添加一个集合使这个数字 n([B]) + n([C])。 由于 set 子句中的字段位于不同的表上,因此它会更改更新的数字。
我想我只是想通了...
MySQL 必须计算将要更新的行数,而不是更新期间发生的连接生成的所有行数。不同之处在于,如果有多个 [B] 对一个 [A],并且有多个 [C] 对一个 [B],则加入所有将创建 n([C]) 行,但更新 [B] 只会计数 n( [B]). 为 [C] 添加一个集合使这个数字 n([B]) + n([C])。
由于 set 子句中的字段位于不同的表上,因此它会更改更新的数字。