MySQL两列唯一键[重复]

Posted

技术标签:

【中文标题】MySQL两列唯一键[重复]【英文标题】:MySQL two-column unique key [duplicate] 【发布时间】:2018-06-05 04:09:35 【问题描述】:

我知道我可以让两列成为唯一键,但这并不是我想要的。

我想要这样,例如如果col1='1', col2='2' 那么col1='1', col2='2' 不能有另一行,但完全可以执行以下操作:

+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    2   |
|    2   |    1   |
|    2   |    2   |
+--------+--------+

虽然这是不可能的:

+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    1   |
+--------+--------+

不能像col1='1', col2='1'col1='1', col2='2' 那样创建两个唯一键,col1 是相同的,如果两者都是唯一键,则不允许这样做。

【问题讨论】:

如何将两列连接到第三列并使其成为唯一键? 您可以在多个键上放置唯一约束,例如ALTER TABLE yourtable ADD UNIQUE unique_index(col1, col2); 正如@GiorgosBetsos 所说,您想要一个两字段唯一键 【参考方案1】:

你需要composite unique index

ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);

【讨论】:

【参考方案2】:

您只需要在col1col2 两列之间声明一个唯一索引:

CREATE TABLE Table1
(
  `col1` int, 
  `col2` int,
   UNIQUE `unique_index`(`col1`, `col2`)
);

如果你尝试在 col1 和 col2 中插入1, 1, 你会得到如下错误:

Duplicate entry '1-1' for key 'unique_index'

你可以自己试试here

【讨论】:

以上是关于MySQL两列唯一键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL双列唯一键[重复]

mySQL如何防止插入,除非两列(字段)的组合是唯一的? [复制]

基于MySql中的两列删除重复记录[重复]

基于两列生成唯一键

根据两列重复值找出唯一的***记录[重复]

excel中两列都有重复值,怎样筛选出两列唯一值?