mysql - 如何使现有列中的重复项唯一?

标签 mysql sql duplicates navicat

我使用的是 MySQL 5.6 服务器。我使用 Navicat 在数据库中工作。

我搜索并找到了很多可能的解决方案来解决我的问题,但没有一个对我有用。

我有一个大约有 36000 行的表。我有一列允许重复条目,但我想让该行中的重复项唯一。 Column with duplicates

我可以使用此查询找到我的重复项。 但数量太多,无法全部手动编辑。 Search Result

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

我正在寻找一种方法来完成这些事情。

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

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

使用唯一条目更新整个列。 (不管它叫什么,它必须是独一无二的。)

提前致谢。

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

最佳答案

假设您的表中没有唯一的列。如果是这样,您可以使用变量来做到这一点:

set @rn := 0;
set @it := '';

update itemtemplate it
    set it.ItemTemplate_ID = (case when @it = it.ItemTemplate_ID
                                   then concat_ws('_', it.name, (@rn := @rn + 1))
                                   when @it := it.ItemTemplate_ID
                                   then if(@rn := 0, it.ItemTemplate_ID, it.ItemTemplate_ID)
                                   else if(@rn := 0, it.ItemTemplate_ID, it.ItemTemplate_ID)
                              end)
    order by it.ItemTemplate_ID;

此方法假设不存在名称为“ABC”和“ABC_1”的列。

关于mysql - 如何使现有列中的重复项唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659752/

相关文章:

python - 通过python程序插入数据库(mysql)

mysql - Django 错误 : AttributeError at - 'Manager' object has no attribute 'META'

r - 避免数字向量移位数中的重复项

string - 删除字符串数组中重复项的最佳算法

java - 从 ArrayList 中删除重复项的算法

mysqldump 无法从发送到已添加的 GEOMETRY 字段的数据中获取几何对象 --hex-blob

php - 如何从 mysql 数据中删除 <br> 以外的 html 标签?

SQL查询帮助: Selecting Rows That Appear A Certain Number Of Times

c# - 密码散列曾经有效,现在我无法进入我的软件

sql - 如何编写一个返回 "between"的查询来返回字母数据,而不仅仅是数字?