0

你能告诉我我SQL query可以用什么来更改表格一列中的重复项吗?我发现了这些重复项:

SELECT Model, count(*) FROM Devices GROUP BY model HAVING count(*) > 1;

我正在寻找有关如何更改其中一个重复值的确切信息,但不幸的是我没有找到适合自己的特定选项,并且所有更多信息都通过删除重复值行来填充,我没有需要。SQL 一点也不强。我寻求帮助。太感谢了。

4

3 回答 3

1

您可以轻松地使用窗口函数(例如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 

Demo

于 2021-01-27T12:09:03.513 回答
0

使用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)
于 2021-01-27T09:29:39.620 回答
-1

命令后:

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,看起来一切都合适,结果很合适,它有效。

于 2021-01-27T09:25:22.717 回答