可以利用distinct关键字对需要处理的字段进行去重
使用group by关键字对去重数据进行去重查询,针对某个字段查询,直接group by 这个字段
在group by 的基础上 也可以使用 having 对查询结果进行二次筛选
MySQL 过滤重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据.
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据.
from 树懒学堂- 一站式数据知识学习平台
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
首先是将数据库里边的重复记录删掉,我看网上有好多答案是这样的:
①. delete from people
但其实我每次运行这条语句都是行不通的,会报错:
java.sql.SQLException: You can't specify target table 'test1' for update in FROM clause
去网上查过好像是说update以及delete操作没办法跟查询操作一起做的,我看过有的更新的跟查询的一起做的好像是给查出来的那部分起个别名,然后进行更新就可以了,但是删除这个我起了别名也不对,不知道是我写错还是不行,我就跳过这个方法了.
我用的方法是:先查出数据库中的重复记录的数据中的一条,这个不难,很简单的,sql语句如下:
select * from test1 where name in (select ?name from test1 ?group ?by ?name ? having ?count(name) 1)
and id in (select min(id) from ?test1 ?group by name ?having count(name)1)
结果如下:
id |name |phont |
---|--------|-------|
这些都是不重复的,换句话说都是要保留的,不被删掉的,而其余与这些结果中name相同的应该被删掉.
也就是说将上边那个sql语句id后边加一个not ,查出来的结果就是要删掉的:结果如下
然后插入语句是:
这样,test1里边的数据就变成了:
这样的结果就是完全不重复的,但是我还想要他们的id是连续的,而不是这样的断开的.
然后插入:
//去除重复的数据
如果是重复的只显示1个
select
distinct
d_name
from
tbl_vod
--下面是查出重复的记录
minus
MySQL查询重复字段,及删除重复记录的方法
数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较.如果仅仅是查找数据库中name不重复的字段,很容易:
SELECT min(+id+),+name+ FROM +table+ GROUP BY +name+;
但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值)查询哪些字段是重复的也容易:
SELECT +name+,count(+name+) as count FROM +table+ GROUP BY +name+ HAVING count(+name+) 1 ORDER BY count DESC;
但是要一次查询到重复字段的id值,就必须使用子查询了,于是使用下面的语句.
SELECT +id+,+name+ FROM +table+ WHERE +name+ in (
SELECT +name+
FROM +table+
GROUP BY +name+ HAVING count(+name+) 1);
但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成零时表.于是使用先建立零时表:
create table +tmptable+ as (
以上就是土嘎嘎小编为大家整理的mysql怎么排除重复值相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!