如何在现有列中创建唯一的重复项?

时间:2017-08-13 11:15:09

标签: mysql sql duplicates navicat

我正在使用MySQL 5.6 Server。我使用Navicat在DB中工作。

我已经搜索过并找到了很多可能的解决方案来解决我的问题但是没有一个能够解决我的问题。

我有一张大约36000行的表格。我有一个列允许重复的托管,但我想使行中的重复唯一。 Column with duplicates

我可以使用此查询找到我的副本。 但是有很多人手动编辑它们。 Search Result

SELECT name, COUNT(ItemTemplate_ID) 
FROM itemtemplate
GROUP BY ItemTemplate_ID
HAVING ( COUNT(ItemTemplate_ID) > 1 )

我正在寻找的是一种做这些事情的方法。

使用新的唯一条目更新重复项。

在每个重复项的另一列中添加文本条目。 (我可以用几个空列来添加一些文字。

使用唯一条目更新整个列。 (无论什么原因必须是唯一的。)

提前致谢。

编辑 - 已经是一个名为Id_nb的唯一列。 我想要更改条目的列不应该是唯一的。

2 个答案:

答案 0 :(得分:0)

我假设您表中没有唯一的列。如果是这样,您可以使用变量执行此操作:

function deleteSubstring($string){
  while($substring.isEmpty()){
      ...... ...
         code for the deleting the substring
      ......... 

  }
  return $string
}

此方法确实假设还没有名称类似" ABC"和" ABC_1"。

答案 1 :(得分:0)

使用新的唯一条目更新重复项。

假设您有一个名为id的唯一列。

update itemtemplate set ItemTemplate_ID = (select md5(uuid())) where 
FIND_IN_SET(id,(SELECT GROUP_CONCAT(id) FROM itemtemplate GROUP BY ItemTemplate_ID HAVING ( COUNT(ItemTemplate_ID) > 1 ) ));

在每个重复项的另一列中添加文本条目。 (我可以用几个空列来添加一些文字。

update itemtemplate set ItemTemplate_ID = (select md5(uuid())), emptyColumn='text' where 
FIND_IN_SET(id,(SELECT GROUP_CONCAT(id) FROM itemtemplate GROUP BY ItemTemplate_ID HAVING ( COUNT(ItemTemplate_ID) > 1 ) ));

对不起,我不太了解第三个问题。 顺便说一句,如果你已经执行了第一个sql,那么第二个sql将不再起作用。