根据一个字段查找另一个字段重复的数据?并删除相同的记录,保留其中一个。

根据一个字段查找另一个字段重复的数据?并删除相同的记录,保留其中一个。

数据库表:product_code_relate_titletext

字段:id,search_id,product_code,raw_title

需求:根据product_code重找raw_title重复的数据?(已实现)

需求:根据product_code重找raw_title重复的数据,并且删除相同的数据,保留id最少的记录即可。

(注意:删除的是product_code下raw_title重复的数据)

select * from product_code_relate_titletext p where (select count(1) from product_code_relate_titletext where product_code=p.product_code and raw_title=p.raw_title)>1  

图片描述

阅读 6.9k
3 个回答

delete from product_code_relate_titletext where id not in (select * from (select min(id) from product_code_relate_titletext group by product_code,raw_title having count(*) > 1) as b);

delete from product_code_relate_titletext where id in 
(
    select a.id from 
    (select * from product_code_relate_titletext where id not in (select min(id) from product_code_relate_titletext group by product_code,raw_title)
    ) a
)

没有您的数据,我这里给一段代码供您参考:

删除相同Name除ID最小的记录外的其他记录
-- ----------------------------
-- Table structure for t_team
-- ----------------------------
DROP TABLE IF EXISTS `t_team`;
CREATE TABLE `t_team` (
  `id` int(11) NOT NULL,
  `user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_team
-- ----------------------------
INSERT INTO `t_team` VALUES ('1', 'A');
INSERT INTO `t_team` VALUES ('2', 'B');
INSERT INTO `t_team` VALUES ('3', 'B');
INSERT INTO `t_team` VALUES ('4', 'A');
INSERT INTO `t_team` VALUES ('5', 'C');
INSERT INTO `t_team` VALUES ('6', 'C');

-- ----------------------------
-- 删除NAME重复的记录,保留ID最小的记录
-- ----------------------------
DELETE FROM t_team WHERE id NOT IN ( 
    SELECT min_id FROM (
            SELECT MIN(id) AS min_id FROM t_team GROUP BY user_name 
        ) B
    )
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题