0

例如,如果您有以下查询:

UPDATE table1 
INNER JOIN table2 ON table1.id = table2.id 
SET table2.id = table1.idSetting 
WHERE table2.property IS NULL

您可以注意到当 table2.property 为 null 时 table2 id 的变化,我的问题是:这是否会在查询运行时影响“受影响的行”。

我做这个问题是因为我正在尝试进行与此类似的更新,它需要更新内部连接子句中的一些列,但假设这将影响 36000 行但最终只影响 4500 行。

谢谢。

4

1 回答 1

0

受影响的行被计为由于更新而真正更改为不同值的行。如果它们已经具有您设置的值,则它们不计为“受影响的”行。

你可以测试:

SELECT COUNT(*) FROM table1 
INNER JOIN table2 ON table1.id = table2.id 
WHERE table2.property IS NULL

以上返回36000还是4500?如果有多少行符合条件,它应该返回 36000。

SELECT COUNT(*) FROM table1 
INNER JOIN table2 ON table1.id = table2.id 
WHERE table2.property IS NULL
AND table2.id <> table1.idSetting

而这可能会返回 4500。

于 2018-06-28T13:23:55.110 回答