首页 > 解决方案 > 更改 SQL Server 中重复数据的值

问题描述

我有一张表Employees,但在这里我有重复的名称,我想只保留一个重复的名称(具有最大 ID 的那个),而对于其他的,我需要将isValid状态更改为 0。

员工表

标签: sqlsql-serverdatabase

解决方案


使用update

with toupdate as (
      select e.*, max(id) over (partition by name) as max_id
      from employees
     )
update toupdate
    set isvalid = (case when id = max_id then 1 else 0 end);

where如果您知道所有isvalid标志都设置为,您也可以使用1

update toupdate
    set isvalid = 0
    where id < max_id;

推荐阅读