sqlite 删除数据库中重复的行
经常在爬取网络的信息后,会发现有重复的行。 如何使用sqlite删除那些重复的行?
本人SQL连入门都算不上,只能用到就去查相关的函数。
经过2个小时的不懈尝试,终于结合网上各种版本的删除数据重复行(网上太多坑呀 )
写出满足自己需求的sql语句
cmd='delete from STRATEGY where rowid not in (select max(rowid) from STRATEGY group by 代码);'
就是上面的这一句语句。
下面来简单说明一下,如果是DBA大牛请忽略。
首先表名字是STRATEGY,里面记录了一些股票,买入的原因,买入时间,股票名字和代码,当前股票的价格。当前的盈亏状态。
如果一天爬取同样的数据几次,机会自动追加到db数据中。 会造成大量的重复数据。
首先从后面往前递推
select max(rowid) from STRATEGY group by 代码
这个语句 选择出来一些rowid, rowid是你创建数据库的时候默认就生产了,因为我在前面生成这个数据库的时候没有设置ID,或者index。 suo所以数据库默认用的是rowid,类似于行号。从第一行开始 rowid=1
上面就是 STRATEGY按照“代码”列进行排序, 因为有相同的,max(rowid)
本人SQL连入门都算不上,只能用到就去查相关的函数。
经过2个小时的不懈尝试,终于结合网上各种版本的删除数据重复行(网上太多坑呀 )
写出满足自己需求的sql语句
cmd='delete from STRATEGY where rowid not in (select max(rowid) from STRATEGY group by 代码);'
就是上面的这一句语句。
下面来简单说明一下,如果是DBA大牛请忽略。
首先表名字是STRATEGY,里面记录了一些股票,买入的原因,买入时间,股票名字和代码,当前股票的价格。当前的盈亏状态。
如果一天爬取同样的数据几次,机会自动追加到db数据中。 会造成大量的重复数据。
首先从后面往前递推
select max(rowid) from STRATEGY group by 代码
这个语句 选择出来一些rowid, rowid是你创建数据库的时候默认就生产了,因为我在前面生成这个数据库的时候没有设置ID,或者index。 suo所以数据库默认用的是rowid,类似于行号。从第一行开始 rowid=1
上面就是 STRATEGY按照“代码”列进行排序, 因为有相同的,max(rowid)