在MS Access(2007-2016)中更新重复行(排除首行)指定列值
在MS Access(2007-2016)中更新重复行(首行除外)的指定列值
需求说明
以person_id和id_addr作为分组依据,每组中保留ID最小的首行note值为空,其余重复行的note列统一设置为d。
解决步骤
定位每组重复数据的首行ID
通过聚合查询筛选出每组重复数据中ID最小的记录(即每组的首行):SELECT person_id, id_addr, MIN(ID) AS MinID FROM 你的表名 GROUP BY person_id, id_addr HAVING COUNT(*) > 1;更新非首行的重复记录
嵌套上述查询,筛选出不属于首行ID的记录,批量更新note列值:UPDATE 你的表名 SET note = 'd' WHERE ID NOT IN ( SELECT MinID FROM ( SELECT person_id, id_addr, MIN(ID) AS MinID FROM 你的表名 GROUP BY person_id, id_addr HAVING COUNT(*) > 1 ) AS SubQuery );
注意事项
- 替换语句中的
你的表名为实际数据表名称; - Access要求嵌套查询必须指定别名(如示例中的
SubQuery),否则会触发语法错误; - 执行更新操作前建议备份数据表,防止数据误修改。
内容的提问来源于stack exchange,提问作者alnvalnnn
相关产品推荐
相关产品推荐

