首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向现有表添加唯一键(包含非唯一行)

问如何向现有表添加唯一键(包含非唯一行)
EN

Stack Overflow用户
提问于 2013-03-07 02:36:42
回答 8查看 197.5K关注 0票数 72

我想将复杂的唯一键添加到现有的表中。Key包含4个字段(user_id、game_id、date、time)。但是表有不唯一的行。我知道我可以删除所有重复的日期,然后添加复杂的密钥。

可能存在另一种解决方案,而无需搜索所有重复数据。(如添加、唯一、忽略等)。

UPD我搜索过,如何删除重复的mysql行-我认为这是一个很好的解决方案。Remove duplicates using only a MySQL query?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-03-07 03:17:12

你可以按照yAnTar的建议去做

代码语言:javascript
复制
ALTER TABLE TABLE_NAME ADD Id INT AUTO_INCREMENT PRIMARY KEY

或

您可以添加约束

代码语言:javascript
复制
ALTER TABLE TABLE_NAME ADD CONSTRAINT constr_ID UNIQUE (user_id, game_id, date, time)

但我认为,为了不丢失现有数据,您可以添加一个标识列,然后创建一个组合键。

票数 140
EN

Stack Overflow用户

发布于 2016-10-04 18:19:37

正确的语法应该是- ALTER TABLE Table_Name ADD UNIQUE (column_name)

示例

代码语言:javascript
复制
ALTER TABLE  0_value_addition_setup ADD UNIQUE (`value_code`)
票数 26
EN

Stack Overflow用户

发布于 2013-12-31 21:24:07

我不得不解决一个类似的问题。我从MS Access继承了一个很大的源表,表中有近15000条记录没有主键,我必须对主键进行规范化并使其与CakePHP兼容。CakePHP的一个约定是,每个表都有一个主键,它是第一列,它被称为“id”。在MySQL 5.5下,下面这句简单的语句帮我解决了这个问题:

代码语言:javascript
复制
ALTER TABLE `database_name`.`table_name` 
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (`id`);

这在现有数据("FIRST“关键字)前面添加了一个整型的新列'id‘。AUTO_INCREMENT关键字从1开始递增id。现在,每个数据集都有一个唯一的数字id。(在没有AUTO_INCREMENT语句的情况下,所有行都用id =0填充)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15255304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档