MySQL如何基于唯一索引gToS编写UPDATE语句的WHERE条件?
在UPDATE语句中使用复合唯一键
gToS的方法 针对你的groupToScore表,以下几种写法都可以在UPDATE的WHERE子句中利用复合唯一键gToS定位目标行:
方法1:直接指定复合键的列条件
这是最直观且通用的写法,直接匹配唯一键包含的两个列,本质就是利用gToS的唯一性来定位单行:
UPDATE groupToScore SET scoreName = #{scoreName} WHERE groupId = #{groupId} AND scoreId = #{scoreId};
方法2:使用行构造器匹配复合键
这和你预期的写法最接近,MySQL支持用行构造函数(列1, 列2)来匹配复合唯一键的组合值:
UPDATE groupToScore SET scoreName = #{scoreName} WHERE (groupId, scoreId) = (#{groupId}, #{scoreId});
这种写法语义上更明确,直接体现出匹配gToS这个复合唯一键的组合值。
方法3:利用唯一键名称的精简写法(MySQL 8.0+支持)
如果想直接引用唯一键名称gToS,可以结合行构造器简化逻辑:
UPDATE groupToScore SET scoreName = #{scoreName} WHERE ROW(groupId, scoreId) = (#{groupId}, #{scoreId});
这里的ROW(groupId, scoreId)会自动关联到唯一键gToS的列组合,效果和前两种一致。
因为gToS是唯一键,以上写法都会精准定位到最多一行数据,避免批量更新的风险。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

