sql - 更改 SQL Server 中重复数据的值
问题描述
我有一张表Employees
,但在这里我有重复的名称,我想只保留一个重复的名称(具有最大 ID 的那个),而对于其他的,我需要将isValid
状态更改为 0。
解决方案
使用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;
推荐阅读
- asp.net - OleDbException | file.mdb' 不是有效路径
- scala - 似乎 Spark RDD 的缓存不起作用,因为 Spark Web UI 上没有 RDD
- python - 如何在 Pandas Python 中组合两个数据框?
- google-kubernetes-engine - GKE 集群指向不可用的 apiservice v1beta1.metrics.k8s.io
- reactjs - 使用 Link 导航时,React Router 会忽略我的 PrivateRoute 包装器
- mysql - sqlx 缺少 MySQL 的目标名称
- spring-boot - 没有 JPA 的 Spring Boot Kotlin 分页
- python - 在 Python 中创建具有 % 重叠的样本数据(使用 faker)
- deep-learning - RuntimeError: 3 维权重 [64, 512, 1] 的预期 3 维输入,但得到了大小为 [4, 512] 的 2 维输入
- sql - 将数据插入临时表时排序。不起作用