mysql 根据两个字段值查询时如何去除重复数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 根据两个字段值查询时如何去除重复数据相关的知识,希望对你有一定的参考价值。
表结构 & 数据
id date name code
1 2015-1-1 张三 1111
2 2015-2-1 李四 2222
3 2015-3-1 张三 1111
4 2015-4-1 王五 3333
5 2015-5-1 赵六 4444
根据字段name和code的值 如果两个值都相同的数据 就按date最大的保留
例如
id为1和3的 name和code都一样 就保留date最大即Id为3的这条数据
求大神指导sql怎么写
假设表名为test:
select * from (select *, concat(name,code) as __f from test order by date desc) __t group by __f; 参考技术A 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from people
where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1)
and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)
看看这里:http://blog.csdn.net/anya/article/details/6407280 参考技术B select distinct a.* from 表 a where a.date = ( select max(b.date) from 表 b where b.name = a.name and b.code = a.code )
自己试试 参考技术C 这个语句是查询`Index`,sequence都相同的数据
select * from (select *, concat(`Index`,sequence) as __f from tbl_item order by sequence desc) __t group by __f having count(__f)>=2;
select * from tbl_item where sequence = 1465399887 参考技术D select distinct id,date ,name,code from 表名 where 条件
在select 后加上一个distinct ,注意 distinct后面的字段不能是重复项的 比如id就可以 name code 就不行了
Mysql去除中文字符&判断字段是不是有中文字符
参考技术A 背景:用户表中的name存的是用户名字的拼音和中文。
需求:名字去除掉所有的中文字符。
解决方案:
通过CONVERT(name USING ASCII)把中文转换为?,然后再进行替换。
引申问题:怎么判断字段包含中文字符
方法1:查询CONVERT(name USING ASCII)转换为后有?的数据。
方法2:通过正则表达式查询,\'[^ -~]\'或\'e[4-9][0-9a-f]4\'或者\'^(..)*(E[4-9])\'表示含中文。
方法3:通过length()和char_length()返回值不同进行查询。
参考链接:
( https://blog.csdn.net/u012731379/article/details/64125572 )
以上是关于mysql 根据两个字段值查询时如何去除重复数据的主要内容,如果未能解决你的问题,请参考以下文章
mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留