发布网友
发布时间:2022-04-23 07:06
共6个回答
懂视网
时间:2022-04-08 09:21
之前在oracle数据库中能删除重复数据并且能保留一条唯一数据,但是相同的MySQL中就不行,
mysql有个特性,对于表进行修改,删除操作,子查询不能和外层的查询的表一样,所以在加个select就可以了
DELETE tt.*
FROM t_user tt --这是操作的表
WHERE tt.username --这是用户名重复的数据
IN(
SELECT cc.username
FROM (
SELECT b.*
FROM t_user b
) cc
GROUP BY cc.username
HAVING COUNT(cc.username) >1
)
AND tt.id --这里是保留id最小的一条,应该比较容易看懂.
NOT IN(
SELECT MIN(e.id)
FROM(
SELECT ee.*
FROM t_user ee) e
GROUP BY e.username
HAVING COUNT(e.username )>1)
)
)
我写的有点丑,但是我想要的结果实现了,就是把上面子查询里面的表换成select查询,还请高手留下优质SQL,感激不尽!
MYSQL删除重复数据
标签:
热心网友
时间:2022-04-08 06:29
MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。
第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表
1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;
第二步:创建新表RES
1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;
第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段
1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。
热心网友
时间:2022-04-08 07:47
MySQL数据库中查询重复数据
Select * From employee group by emp_name having count (*)>1;
Mysql 查询可以删除的重复数据
Select t1.* From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
Mysql 删除重复的数据
Delete t1 From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
热心网友
时间:2022-04-08 09:21
mysql去重需要需要创建临时表,用distinct或者group by后的数据添加到临时表,然后清空原表将临时表数据插入原表;
如果你知道有几条重复的,可以在delete后面接limit来删除重复的数据
热心网友
时间:2022-04-08 11:13
猜测一下,你的数据库没有建立索引,所以导致往表里插入数据的时候,有重复数据,如果确定重复数据的所有字段都一样,告诉你一个方法删除重复的。
创建一个临时表,表结构与数据表一致,比如原表叫table,临时表叫table_tmp,则
insert into table_tmp select distinct (*) from table
这样做,临时表中就是去掉重复的数据了,然后将table表清空,再将临时表的数据插入到table中,就达到去掉重复的目的了。
热心网友
时间:2022-04-08 13:21
方法/步骤:
1.先看下我们的表数据,有一些数据是重复的。
2.要查找重复数据,我们可以使用mysql里的having语句。
3.执行这个语句后,我们可以看到现在的结果里显示的就是表中重复数据的字段。
4.要删除这些重复的数据,我们找出这些数据的ID,在select语句里,添加id字段,使用m...
5.得到重复数据的id为8和9。