婚恋源码搭建,数据库如何过滤产生的重复数据

网友投稿 331 2023-11-26 15:38:16

在婚恋源码运营的过程中,可能会因为某些原因产生一些重复数据,那么数据库实现重复数据过滤的呢?

CREATE TABLE `animal` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` varchar(20) DEFAULT NULL,   `age` int(11) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES (1, cat, 12); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES (2, dog, 13); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES (3, camel, 25); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES (4, cat, 32); INSERT INTO `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES (5, dog, 42);

目标:我们要去掉name相同的数据。先看看哪些数据重复了

SELECT name,count( 1 )  FROM  student  GROUP BY NAME  HAVING  count( 1 ) > 1;

  删除表中删除重复数据,仅保留一条在删除之前,我们可以先查一下,我们要删除的重复数据是啥样的

SELECT  *  FROM  student  WHERE  id NOT IN (  SELECT   t.id   FROM  ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t   )

啥意思呢,就是先通过name分组,查出id最小的数据,这些数据就是我们要留下的火种,那么再查询出id不在这里面的,就是我们要删除的重复数据。

开始删除重复数据,仅留一条很简单,刚才的select换成delete即可

DELETE  FROM  student  WHERE  id NOT IN (  SELECT   t.id   FROM  ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t   )

这样,婚恋源码就实现了重复数据过滤。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69982461/viewspace-2849121/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis、MySQL缓存双写不一致如何解决
下一篇:MySQL如何快速搭建主从复制架构
相关文章