【问题标题】: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。

    【讨论】:

    • 返回 36000 行
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2022-12-10
    • 2019-03-27
    • 2012-10-30
    • 2019-06-25
    相关资源
    最近更新 更多