当前位置: 首页 > 面试题库 >

如何将唯一键添加到现有表(具有非唯一行)

方宏才
2023-03-14
问题内容

我想向现有表添加复杂的唯一键。主要从4个字段包含(user_idgame_iddatetime)。但是表具有非唯一行。我知道我可以删除所有重复的日期,然后再添加复杂的密钥。

也许存在另一种无需搜索所有重复数据的解决方案。(例如添加唯一的忽略等)。

我搜索了UPD,如何删除重复的mysql行-我认为这是一个很好的解决方案。
仅使用MySQL查询删除重复项?


问题答案:

您可以按照yAnTar的建议进行

ALTER TABLE TABLE_NAME ADD Id INT AUTO_INCREMENT PRIMARY KEY

要么

您可以添加约束

ALTER TABLE TABLE_NAME ADD CONSTRAINT constr_ID UNIQUE (user_id, game_id, date, time)

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



 类似资料:
  • 问题内容: 这个问题需要一些假设的背景。让我们考虑一个有列的表,,,,使用MySQL作为RDBMS。由于如果给定的某个人的名字和出生日期与另一个人相同,那么根据定义,他们就是同一个人(除非有两个巧合,即我们两个人分别于1809年2月12日出生,他们叫亚伯拉罕·林肯),所以我们将上的唯一键,这意味着“不要将同一个人存储两次”。现在考虑以下数据: 如果现在尝试运行以下语句,则该语句应该并且将失败: 如

  • 问题内容: 我对数据库表中的唯一行有问题,现在可以这样做: 当我在所有列中使用UNIQUE属性时,即使第二个Moore名称不同,我也会插入第二个Moore错误:/ 如何使用UNIQUE(或INDEX?)在db表中执行类似的操作: 抱歉,如果问题很简单,但是我是sql的初学者,并且在使用UNIQUE之类的UNIQUE时找到一些好的示例时遇到问题:/或者也许我必须在插入新行之前从db中选择一个表并检查

  • 问题内容: 我在Postgres DB中有两个名为&的表,如下所示: 如何确保仅将或的唯一组合用于主键,以便表不允许插入以下内容: 如果已经有包含like的行: 目的是避免相同玩家之间的比赛进入。 问题答案: 创建一个唯一索引: 不能是或约束,因为它们仅适用于列,不适用于表达式。 您可以添加一个列作为PK,但是只有两个整数列,原始PK也非常有效(请参阅注释)。它会自动使两列都变为。(否则,添加约束

  • 我有一个名为的现有表。在这个表中,我有5列: persionId 人名 PMid 描述 Pamt 创建此表时,我将和设置为主键。 我现在想在主键中再包含一列——PMID。我如何编写一个语句来做到这一点?(表中已经有1000条记录了)

  • 我正在运行Postgres 9.5,并试图基于3个字段创建一个唯一的约束。我遇到的问题是,其中两列可以为NULL,因此这些字段为NULL的行不会违反唯一约束。我的目标是将其作为一个约束,因为我正在尝试更新冲突(UPSERT)。 桌子的结构是这样的 我在这里发现了另一个问题,我可以按照以下方式做一些事情 我不确定在where子句中有两个字段时这是否真的有效,但如何在冲突时调用这个唯一索引呢? 或者我

  • 问题内容: 有人知道为什么这对两个表别名“ x”都有效吗? 我知道ID为5的JOIN没有任何意义… 感谢您的教训! 问题答案: 下面的前两个查询是等效的。在连接的子句中,表别名仅指使用该别名的最后一个表,因此仅表受到限制。 在和表达式中,别名引用两个表-因此,列名是唯一的,则可以成功引用它们,但是,在列名相同的情况下,oracle会引发异常(如果删除了注释,则在查询3中会发生这种情况)。 我找不到