我想添加复杂的唯一键到现有的表。关键字包含从4个字段(user_id
,game_id
,date
,time
)。但表有非唯一行。我知道我可以删除所有重复的日期,然后添加复杂的关键字。
可能存在另一个解决方案而不搜索所有重复的数据。(如添加唯一忽略等)。
UPD我搜索,如何可以删除重复的MySQL行-我认为这是很好的解决方案。Remove duplicates using only a MySQL query?
我想添加复杂的唯一键到现有的表。关键字包含从4个字段(user_id
,game_id
,date
,time
)。但表有非唯一行。我知道我可以删除所有重复的日期,然后添加复杂的关键字。
可能存在另一个解决方案而不搜索所有重复的数据。(如添加唯一忽略等)。
UPD我搜索,如何可以删除重复的MySQL行-我认为这是很好的解决方案。Remove duplicates using only a MySQL query?
8条答案
按热度按时间r1zk6ea11#
你可以照安塔尔说的做
或
您可以添加约束
但我认为为了不丢失现有数据,可以添加一个identity列,然后创建一个组合键。
puruo6ea2#
正确的语法应该是-
ALTER TABLE Table_Name ADD UNIQUE (column_name)
示例
2w3rbyxf3#
我不得不解决一个类似的问题。我从MS Access继承了一个大型源表,其中有近15000条记录,没有主键,我必须将其规范化并使其与CakePHP兼容。CakePHP的一个约定是每个表都有一个主键,它是第一列,它被称为“id”。下面的简单语句在MySQL 5.5下为我提供了窍门:
这将在现有数据前面添加一个整数类型的新列“id”(“FIRST”关键字)。AUTO_INCREMENT关键字从1开始递增id。现在,每个数据集都有一个唯一的数字id。(如果没有AUTO_INCREMENT语句,所有行都用id = 0填充)。
ktecyv1j4#
将多个唯一键设置到表中
abithluo5#
我提供的解决方案假设了您的业务逻辑。基本上,在我的设计中,我将允许表只存储用户-游戏组合的一条记录。因此,我将向表添加一个组合键。
sbtkgmzw6#
创建一个自动递增的id或一个UNIQUE id,并将其添加到您正在讨论的4个字段的自然键中。这将使表中的每一行都是唯一的...
rjee0c157#
对于MySQL:
p8h8hvxi8#
如果yourColumnName有一些值不是唯一的,现在你想为它添加一个唯一的索引。
现在,尝试插入一些值,以进行测试。