当前位置: 代码网 > it编程>数据库>Mysql > mysql如何判断同一字段是否有重复数据

mysql如何判断同一字段是否有重复数据

2024年05月26日 Mysql 我要评论
mysql判断同一字段是否有重复数据有时候我们呢会遇到业务问题:判断数据库字段是否含有重复数据?解决方式其实很简单,直接写sql语句:select 字段名 from 表名 group by 字段名ha

mysql判断同一字段是否有重复数据

有时候我们呢会遇到业务问题:判断数据库字段是否含有重复数据?

解决方式

其实很简单,直接写sql语句:

select 字段名 from 表名 

group by 字段名

having count(*)>1

原因刨析

我们运用group by来进行分组,然后再把分组里大于1条的数据挑出来自然就是重复的数据。

实例展示

1.创建一张表

2.里面有‘张三’这个重复数据,把它挑出来

select name from testname
group by name
having count(*)>1

3.结果是只有'张三'这个结果,得到了重复的数据。

mysql对某个字段重复数据的查询,删除,与合并

1.对于部门表部门编号重复的数据

进行相关操作

-- 先查看部门信息原表的数据
select * from t_dept;

-- 查询出所有d_no有重复的数据(没有重复的不显示,即104在表中只有一条,所以不显示)
select * from t_dept td where td.d_no in (select t1.d_no from t_dept t1 group by t1.d_no having count(1) > 1);

-- 查询出所有d_no有重复的数据(只显示多余的那几条,比如101和103表中一共有三条,只显示多余的两条,同样102有两条,那么只显示多余的那一条)
​​​​​​​select * from t_dept td where td.d_id not in (select min(t1.d_id) min_id from t_dept t1 group by t1.d_no);

-- 删除表中d_no重复的数据,只留一条
​​​​​​​delete from t_dept td where td.d_id not in (select tab.min_id from (select min(t1.d_id) min_id from t_dept t1 group by t1.d_no) tab);

2.对于故障信息表将相同设备的问题信息合并成一条

-- 先查看故障信息原表的数据
select * from t_fault;

-- 将故障等级和故障信息拼接在一起(concat_ws()函数)
​​​​​​​select tf.f_id,tf.f_no,tf.f_name,concat_ws('-',tf.f_level,tf.f_desc) as f_msg from t_fault tf 

-- 将故障信息和故障等级拼接在一起(这里使用concat_ws()函数),并将编号名称相同的产品合并成一条(这里使用group_concat()函数)
select tab.f_no,tab.f_name,group_concat(tab.f_msg separator ';') goup_msg from 
(select tf.f_id,tf.f_no,tf.f_name,concat_ws('-',tf.f_level,tf.f_desc) as f_msg from t_fault tf ) tab 
group by tab.f_no,tab.f_name

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com