如何解决更改列中的重复值
你能告诉我我可以使用什么 sql query
来更改表格一列中的重复项吗?
我发现了这些重复项:
SELECT Model,count(*) FROM Devices GROUP BY model HAVING count(*) > 1;
我一直在寻找有关如何更改重复值之一的确切信息,但不幸的是我没有找到适合自己的特定选项,并且通过删除重复值行来填充更多信息,我不需要。根本不擅长 sql。我寻求帮助。非常感谢。
解决方法
您可以轻松地使用带有分区选项的窗口函数,例如 ROW_NUMBER()
以按 Model
列分组以消除重复项,然后选择返回的第一行(rn=1
)来自子查询,例如
WITH d AS
(
SELECT *,ROW_NUMBER() OVER (PARTITION BY Model) AS rn
FROM Devices
)
SELECT ID,Model --,and the other columns
FROM d
WHERE rn = 1
,
使用 exists
如下:
update d
set Model = '-'
from Devices d
where exists (select 1 from device dd where dd.model = d.model and dd.id > d.id)
,
命令后:
SELECT Model,count (*) FROM Devices GROUP BY model HAVING count (*)> 1;
我得到了结果:
- 1895 行 = NULL;
- 3383 行有重复值;
- 所有这些值都是 1243。
应用您的命令后:
update Devices set
Model = '-'
where id not in
(select
min(Devices .id)
from Devices
group by Devices.Model)
我更改了 4035 行。 如果你数一数,结果是 (3383 + 1895) = 5278 - 1243 = 4035 看起来一切都很好,结果很合适,很管用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。