你能告诉我我SQL query
可以用什么来更改表格一列中的重复项吗?我发现了这些重复项:
SELECT Model, count(*) FROM Devices GROUP BY model HAVING count(*) > 1;
我正在寻找有关如何更改其中一个重复值的确切信息,但不幸的是我没有找到适合自己的特定选项,并且所有更多信息都通过删除重复值行来填充,我没有需要。SQL 一点也不强。我寻求帮助。太感谢了。
你能告诉我我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;
我得到结果:
应用您的命令后:
update Devices set
Model = '-'
where id not in
(select
min(Devices .id)
from Devices
group by Devices.Model)
我改变了 4035 行。如果你数一数,结果是 (3383 + 1895) = 5278 - 1243 = 4035,看起来一切都合适,结果很合适,它有效。