【问题标题】:When I do an update with inner joins, changing the clause ON columns affects the update?当我使用内部连接进行更新时,更改子句 ON 列会影响更新吗?
【发布时间】:2018-12-07 14:15:55
【问题描述】:
例如,如果您有以下查询:
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 行。
谢谢。
【问题讨论】:
标签:
mysql
sql
rows-affected
【解决方案1】:
受影响的行被计为由于更新而真正更改为不同值的行。如果它们已经具有您设置的值,则它们不会算作“受影响的”行。
你可以测试一下:
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。