优秀的编程知识分享平台

网站首页 > 技术文章 正文

MySQL数据库中,使用联表查询SQL删除重复的行

nanyue 2024-11-19 07:53:18 技术文章 3 ℃

爬虫抓取数据时,写入数据存在重复,但是有一定规则,如何快速找出来将其删除。

数据库使用的MySQL 5.7,已经获取了16万行数据,示例如下:



表结构




重复的规则

本表的唯一索引是 f_ciyu+f_pinyin,但是因为爬虫获取字词时,将pinyin写错了(重复了2次),造成由如下重复项。如下表所示:

游戏

yóu xì

保留

游戏

yóu xì yóu xì

删除


查出重复的数据

SELECT
	a.* 
FROM
	t_ciyu a
	JOIN t_ciyu b ON (
	REPLACE ( a.f_pinyin, ' ', '' ) = REPLACE ( CONCAT( b.f_pinyin, ' ', b.f_pinyin ), ' ', '' ) 
	AND a.f_ciyu = b.f_ciyu 
	) 
WHERE
	a.f_pinyin <> b.f_pinyin 

删除重复的数据


delete
	a
FROM
	t_ciyu a
	JOIN t_ciyu b ON (
	REPLACE ( a.f_pinyin, ' ', '' ) = REPLACE ( CONCAT( b.f_pinyin, ' ', b.f_pinyin ), ' ', '' ) 
	AND a.f_ciyu = b.f_ciyu 
	) 
WHERE
	a.f_pinyin <> b.f_pinyin 
最近发表
标签列表