mysql主键对应的值不能重复

mysql主键对应的值不能重复,第1张

问题原因: 数据表中设置了主键(testers),而主键对应的值是不允许重复的。 错误提示为:你插入的记录与数据表中原有记录的主键重复了(Duplicate)。所以插入失败。 注意:检查表中属性的字段,在添加记录时是否添加了重复值。 解决方案: 把testers设置非主键,`testers` varchar(10) DEFAULT NULL COMMENT '测试人员',

一、使用不同:

主键索引是在创建主键时一起创建的,是基于主键约束而建立的,是不可以为空,也不可以重复。

唯一索是引基于唯一约束而建立的,可以为空不可以重复,主键索引本身就具备了唯一索引的功能。

二、作用不同:

唯一索引的作用跟主键的作用一样。不同的是,在一张表里面只能有一个主键,主键不能为空,唯一索引可以有多个,唯一索引可以有一条记录为空,即保证跟别人不一样就行。

比如学生表,在学校里面一般用学号做主键,身份z则弄成唯一索引;而到了教育局,他们就把身份z号弄成主键,学号换成了唯一索引。

三、定义不同:

普通索引:这是最基本的索引类型,而且它没有唯一性之类的限制。

唯一性索引:这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。

扩展资料:

要对一个表建立唯一索引,可以使用关键字UNIQUE。对聚簇索引和非聚簇索引都可以使用这个关键字。

例子

CREATE UNIQUE CLUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

其中:CLUSTERED INDEX是用来建立聚簇索引的关键字,此语句的意思是在表mytable上的mycolumn字段上创建一个名为myclumn_cindex的聚簇索引,且为唯一索引。

参考资料来源:百度百科-唯一索引

//查询表中的数据 同时某个字段不重复 并且排序

首先做一下查询某个字段不重复(使用group by);

select * from 表名 where group by 不重复的字段名;

在做一下排序,我之前有发过一次排序,这次就做一个简单排序

order by 字段a=0 desc, 字段a desc,字段b desc (a字段等于0在最前面,a字段除了0之外的都为倒叙,b字段倒叙);

这样组合起来就好了

select * from 表名 where group by 不重复的字段名 order by 字段a=0 desc, 字段a desc,字段b desc;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6199696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存