问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql如何去除两个字段数据相同的记录

发布网友 发布时间:2022-04-19 11:39

我来回答

9个回答

热心网友 时间:2022-04-07 16:06

方法有很多,这里介绍两种

方法一、

如果要保留id的最小值,例如:

数据:
执行sql:select count(*) as count ,name,id from ceshi group by name
<img 

最后要删除的sql为:delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name)

如果想保留id的最大值:
简单的办法是:delete from ceshi where id not in (select count(*) as count ,name,id from (select * from ceshi order by id desc) group by name)

如果想要删除的是两个列里面对应相同的数据,也就是说表里面有两条记录的name都是admin,要是只想保留其中一条的话,order by 的时候增加一个值即可,例如:

delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name,email)

方法二、

只需要把你这张表当成两张表来处理就行了。

DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id;

这里有个问题,保留最新的那一条(也就是ID最小的那个)

上面的的语句,p1.id < p2.id,所以获取到的是id最大的,因为p1.id小于p2.id就会被删除,只有最大的值不满足。如果要获取id最小的那个,只需要把'<'改成'>'即可。

当然是用group by,count可以更精准控制重复n次的情况。

热心网友 时间:2022-04-07 17:24

想要去除两个字段数据相同的记录只需要把把这张表当成两张表来处理:


下面的的语句,p1.id < p2.id,所以获取到的是id最大的,因为p1.id小于p2.id就会被删除,只有最大的值不满足。如果要获取id最小的那个,只需要把'<'改成'>'即可。

DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id;

如果需求是只要把重复的删掉,保留最新的就行可以使用上面的语句。

如果需要稍微复杂,可以用group by,count精准控制重复n次的情况。

热心网友 时间:2022-04-07 18:59

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 (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) >1);
然后使用多表连接查询:
SELECT a.`id`, a.`name` FROM `table` a, `tmptable` t WHERE a.`name` = t.`name`;
结果这次结果很快就出来了。
========================
查询及删除重复记录的方法
(一)
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

热心网友 时间:2022-04-07 20:50

假设你的表名是mytable,可能含有相同数据的字段是numA和numB,那么删除两个字段数据相同的记录方法为:
1.查询具有相同数据的记录

select  * from mytable where numA in(select numB from mytable);

2.进行删除

delete mytable where id in(select  id from mytable where numA in(select numB from mytable));

热心网友 时间:2022-04-07 22:58

其实你会用英文搜索的话。可以很方便在stack overflow上 找到相关的信息 真的学CS的就不要用百度了 用google你会发现一个不一样的世界的
随便贴一个
sql - How can I remove plicate rows?

稍微讲一下其中一个思路(里面有很多很好的答案 你可以自己去看)
就是做一个group by 保留其中id 最大的(你说自增长 id最大的应该就是最新的)就可以了
具体sql query 可以这样写
delete from test where id not in(
select name,email,max(id) from test
group by name,email having id is not null)

热心网友 时间:2022-04-08 01:23

用 distinct 可以不显示重复的记录。
如,去掉name重复的记录
select distinct(name) from student;

热心网友 时间:2022-04-08 07:02

用group by 就可以,对字段进行分组,数据相同的只会出来一条

热心网友 时间:2022-04-08 10:17

在查询视图直接写查询语句:

use 数据库名
go
select distinct 字段  from (select 字段1 as a from 表名 union select 字段2 as a from 表名) as 查询1

热心网友 时间:2022-04-08 13:48

假设表名为test:

select * from (select *, concat(name,code) as __f from test order by date desc) __t group by __f;
MySQL去重显示消除重复字段mysql不显示重复字段

方法一:使用DISTINCT关键字 在MySQL中,要消除重复字段,可以使用DISTINCT关键字。DISTINCT关键字用于去重显示相同的记录,例如:SELECT DISTINCT column1, column2, …, columnn FROM table_name;其中,column1、column2等是要查询的字段名称,table_name是要查询的表名。使用DISTINCT关键字可以查询出...

MySQL去重语法大全mysql中去重语法

这个语句会返回存在于学生表和教师表中的name字段值,并去除重复记录。6. IN IN是判断一个字段是否存在于一个列表中,同样也可以用于去重,语法如下:SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2, …);例如:SELECT * FROM students WHERE name IN (‘Tom’, ‘Je...

mysql查询去掉重复数据

在MySQL中,处理数据时,我们常常需要去除重复的记录,这时候可以借助distinct关键字和group by语句来实现。distinct关键字用于对指定字段进行去重,只需在查询语句中添加该字段名前的distinct即可,例如:SELECT distinct column_name FROM table_name。而group by则更为灵活,它允许我们按照一个或多个字段对...

mysql如何去除两个字段数据相同的记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) &gt; 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete ...

Mysql根据一张表俩个字段删除重复数据

如果你需要的是删除数据库中的数据:delete from table a where (a.user_id,a.tw_id) in (select user_id,tw_id from vitae group by user_id,tw_id having count(*) &gt; 1)and rowid not in (select min(rowid) from vitae group by user_id,tw_id having count(*)&gt;1)如果只是查出...

MySQL 数据库去重(distinct)

另一种用法是计数,涉及两种情况:第一,直接计算指定字段的出现次数,使用 count:第二,计算所有字段的出现次数,先按 password 分组,然后根据不同的 username 计数,如果 username 相同,则认为是相同的记录。总的来说,distinct 是查询时去除重复记录的强大工具,但使用时需注意其功能及语法限制。

mysql 根据两个字段值查询时如何去除重复数据

假设表名为test:select * from (select *, concat(name,code) as __f from test order by date desc) __t group by __f;

mysql查询时如何去除重复数据

MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。from 树懒学堂- 一站式数据知识学习平台 你也可以使用 GROUP BY 来读取数据表中不重复的数据:...

[MYSQL]去除字段重复 保留另一字段不为空的一条数据

点上面的菜单栏,有个数据-筛选-高级筛选,在出来的窗口上把下面的选择不重复记录勾上就行了

phpmyadmin管理去除mysql数据库重复数据?

给你一个示例SQL,自己修改一下。delete p1 from tb_d as p1, tb_d as p2 where p1.col2=p2.col2 and p1.col3=p2.col3 and ...-- 这里省略了,有多少给字段是相同的,这就写几个and条件。and p1.id &gt; p1.id;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么软件借钱容易审核过 wifi监控摄像头能监控到我上网浏览的内容吗? 中国岛屿绝大部分分布在()以南的海域? 体温正常,医生看喉咙也没事,就是喉咙左侧疼的厉害,跟针扎一样疼,扭动脖... 被骗在借条上签名了怎么办呢 喉咙里面左边疼,感觉吞口水或喝水疼,右边没事,就喉咙左边疼啊,有点肿... 因为受骗而写的借条有法律效果吗? 嗓子左边疼… 被骗打借条不放款我应该怎么办? 被骗写借条会怎么处理 mysql 现在表中出现重复数据,怎样删除重复数据 请教mysql大数据删除重复 在Mysql下如何删除重复的数据~ 怎么删除重复的Mysql数据? mysql UNION 有重复的数据,怎么解决 mysql 多个字段有重复数据, 我需要进行去重处理 mysql重复数据处理? 怎么样美团点外卖可以最划算?最划算?最划算? 美团外卖红包外卖怪? 男生问我上班累不累是什么意思? 有火和木字旁的名字吗 pca 知道踢出了什么变量 盗跖是什么人? 《仙剑传说2》txt全集下载 wps文字样式在哪里 Wps 单元格格式在哪个位置 怎么在wps文档做格式 WPS文档格式? wps的格式在哪里 wps的格式在哪怎么使用 mysql连表查询出现重复的数据怎么办 404 Not Found 如何让mysql速度更快的响应?如何提高读取和查询速度 如何提高mysql大批量数据更新的效率 mysql left join 右表存在重复数据,怎么处理 关于mysql处理百万级以上的数据时如何提高 mysql中有重复的数据,怎么删除,只留下一条就行了。 mysql 批量更新10000+的数据,有什么效率比较高的方法 如何解决mysql读写效率 mysql 插入数据如何防止重复 mysql数据库如何用一条语句同时查多个数据库 怎样点外卖最省钱? 外卖红包外卖怪? 外卖优惠券外卖怪公众号哪个好用? QQ5位,6位,7位,8位,9位,分别发行于哪一年? 怎样设置QQ密码几位数? 美团优先怎么邀请老顾客下单 2020年的QQ号是几位数吖?? 如何定位QQ? qq号9位数,是哪一年出的