当然是锁行了,要是筛选出来要更新的行数就只有一行,把整个表锁住代价也太大了,筛选出了哪些行就锁哪些行,这样其他行不会受影响。mysql5.7版本之后默认开启了ONLY_FULL_GROUP_BY策略,即:SELECT语句中的字段必须要么出现在GROUP BY子句中,要么作为聚合函数的参数。这个策略的目的是确保查询结果的准确性和一致性,并避免在查询中使用模糊的或不确定的字段。所以你的说法适用于mysql5.7之前的版本,但是建议你都写上,避免不同的Mysql版本之间同样的语句不同的结果(亲身经历,本地是mysql5.6不加不报错,生产上是mysql5.7报错了)
当然是锁行了,要是筛选出来要更新的行数就只有一行,把整个表锁住代价也太大了,筛选出了哪些行就锁哪些行,这样其他行不会受影响。
mysql5.7版本之后默认开启了ONLY_FULL_GROUP_BY策略,即:
SELECT语句中的字段必须要么出现在GROUP BY子句中,要么作为聚合函数的参数。
这个策略的目的是确保查询结果的准确性和一致性,并避免在查询中使用模糊的或不确定的字段。
所以你的说法适用于mysql5.7之前的版本,但是建议你都写上,避免不同的Mysql版本之间同样的语句不同的结果(亲身经历,本地是mysql5.6不加不报错,生产上是mysql5.7报错了)