MySQL批量更新:将重复ISRC的SoundRecordingCode设为最大值
MySQL批量更新重复ISRC对应的SoundRecordingCode为最大值
要实现将同一ISRC下所有记录的SoundRecordingCode统一更新为该ISRC对应的最大值,你可以通过子查询+JOIN关联的方式完成批量更新,避免只更新单行的问题。
1. 先验证目标最大值(可选但推荐)
先执行以下查询,确认每个ISRC对应的最大SoundRecordingCode是否符合预期:
SELECT ISRC, MAX(SoundRecordingCode) AS max_code FROM your_table_name GROUP BY ISRC HAVING COUNT(*) > 1; -- 仅筛选存在重复的ISRC,可按需移除
2. 执行批量更新
使用UPDATE JOIN关联原表和子查询结果,批量更新所有匹配的记录:
UPDATE your_table_name t1 JOIN ( SELECT ISRC, MAX(SoundRecordingCode) AS max_code FROM your_table_name GROUP BY ISRC ) t2 ON t1.ISRC = t2.ISRC SET t1.SoundRecordingCode = t2.max_code;
如果只想更新存在重复的ISRC对应的记录(即ISRC出现多次的行),可以在子查询中添加HAVING条件:
UPDATE your_table_name t1 JOIN ( SELECT ISRC, MAX(SoundRecordingCode) AS max_code FROM your_table_name GROUP BY ISRC HAVING COUNT(*) > 1 ) t2 ON t1.ISRC = t2.ISRC SET t1.SoundRecordingCode = t2.max_code;
注意事项
- 替换
your_table_name为你的实际表名 - 若
SoundRecordingCode是字符串类型,MAX()函数会按字典序取最大值;若为数值类型则按数值大小计算 - 建议先运行子查询确认结果正确后,再执行UPDATE操作,避免误改数据
内容的提问来源于stack exchange,提问作者Ben Carr
相关产品推荐
相关产品推荐

