十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MySQL 删除重复数据
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了丰宁免费建站欢迎大家使用!
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。
删除重复数据
如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:
from 树懒学堂 - 一站式数据知识平台
当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:
MySQL 过滤重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
from 树懒学堂- 一站式数据知识学习平台
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
1、使用navicat连接上mysql数据库,新建一张用户表。
2、然后填入几条测试内容,来演示测试效果。
2、选中用户名右击选择设计表。
3、然后在设计表里切换到索引选项卡。
4、这一步开始添加一条索引,如果对索引名称没有要求可以默认为空,工具会自动帮生成和字段名一样的名称。点击栏位后面的按钮出现选择框,选择需要唯一约束的字段,这里我们登录名字段。
5、索引类型选择,这里是关键,唯一性约束一定要选择Unique类型。
6、最后添加完成唯一索引之后,修改下第三条数据的登录名为bb和第二条一样,然后点击下方对号按钮,进行保存
7、此时保存时候就会报错,提示"Duplicate entry 'bb' for key 'login_name'",重复的登录名,不能保存成功,说明添加的唯一性约束生效了。
需求说明
1、我需要查询某列不重复的数据
2、并且显示不重复数据的所有项
sql语句如下
select * from data group by address;
如果是仅仅查询某列不重复数据,只需要一列
效果如下
sql语句
select DISTINCT address from data
这里有一个非常非常需要注意的地方:
SELECT DISTINCT [字段名]后面不能再跟其他的字段,否则检索出来的记录仍然会含有重复项;
错误写法:
SELECT DISTINCT [字段名] ,[其他字段名] FROM [表名] WHERE [检索条件字句]
如果我们的记录集里还需要有其他字段值 ,那怎么办呢?
实际上,我们完全可以用另一种办法来解决问题;只是需要用到子查询而已!
使用GROUP BY 分组
有一点需要注意:
使用带有GROUP BY字句的查询语句时,在SELECT列表指定的列要么是GROUP BY 指定的列,要么包含聚合组函数
所以用这样一句SQL就可以去掉重复项了:
select * from msg group by terminal_id;
这样就得到我们想要的结果集了:
//查询表中的数据 同时某个字段不重复 并且排序
首先做一下查询某个字段不重复(使用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;
问题原因:
数据表中设置了主键(testers),而主键对应的值是不允许重复的。
错误提示为:你插入的记录与数据表中原有记录的主键重复了(Duplicate)。所以插入失败。
注意:检查表中属性的字段,在添加记录时是否添加了重复值。
解决方案:
把testers设置非主键,`testers` varchar(10) DEFAULT NULL COMMENT '测试人员',