mysql数据库怎么删除重复数据?如果两行的 a和b两列都一样。那么说明是重复的 删除其中一行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库怎么删除重复数据?如果两行的 a和b两列都一样。那么说明是重复的 删除其中一行。相关的知识,希望对你有一定的参考价值。

mysql数据库怎么删除重复数据?如果两行的 a和b两列都一样。那么说明是重复的 删除其中一行。 并且a b都不是主键。 怎么删除?

如果你的表结构设计的比较严谨的话,比如当前表table是有主键ID,
先把第一个重复值选出来: select min(id) from table group by a,b having count(*) > 1;
然后删除重复的记录: delete from table where id > (select min(id) from table group by a,b having count(*) > 1);

如果你的表设计的不严谨,比如没有ID这个可供操作的主键,那就只能在where后面多一些条件直到找出唯一的筛选方法。
参考技术A 建议不要轻易地删除数据库内容,如果非要删除的话,建议用代码查找符合条件的数据,找出相应的id,然后用id跟数据库一条一条做对比,看是否应删除数据在手动删除,这样能保证不会有误删的情况,在一个问题就是操作数据库之前一定要做好备份,否则后果不堪设想!加油

查找重复行的索引 [重复]

【中文标题】查找重复行的索引 [重复]【英文标题】:Find indices of duplicated rows [duplicate] 【发布时间】:2012-09-11 19:11:07 【问题描述】:

R 中重复的函数执行重复行搜索。如果我们想删除重复项,我们只需要写df[!duplicated(df),],重复项将从数据框中删除。

但是如何找到重复数据的索引呢?如果duplicated 在某行返回TRUE,则表示这是该行在数据框中的第二次出现,并且可以轻松获得其索引。如何获取该行第一次出现的索引?或者,换句话说,与重复行相同的索引?

我可以在 data.frame 上做一个循环,但我认为这个问题有一个更优雅的答案。

【问题讨论】:

使用 dplyr 的好方法:***.com/a/28244567 annndrey,你为什么接受斯文的回答?它回答了完全不同的问题。 【参考方案1】:

这是一个例子:

df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1))

duplicated(df) | duplicated(df, fromLast = TRUE)
#[1]  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE

它是如何工作的?

函数duplicated(df) 确定原始数据中的重复元素。 fromLast = TRUE 表示“应从反面考虑重复”。这两个结果逻辑向量使用| 组合,因为其中至少一个中的TRUE 表示重复值。

【讨论】:

这根本不能回答问题!【参考方案2】:

如果您使用的是 keyed data.table,那么您可以使用以下优雅的语法

library(data.table)
DT <- data.table(A = rep(1:3, each=4), 
                 B = rep(1:4, each=3), 
                 C = rep(1:2, 6), key = "A,B,C")

DT[unique(DT[duplicated(DT)]),which=T]

解压

DT[duplicated(DT)] 子集那些重复的行。

unique(...) 仅返回重复行的唯一组合。这处理超过 1 个重复的任何情况(重复的重复,例如三次重复等)

DT[..., which = T] 将重复行与原始行合并,which=T 返回行号(没有which = T 它只会返回数据)。

你也可以使用

 DT[,count := .N,by = list(A,B,C)][count>1, which=T]

【讨论】:

在第二种情况下,无需设置密钥(并且在没有密钥的情况下 by 效率不低)。 我真的很喜欢这种方法,但似乎 DT[duplicated(DT)] 的结果不包括重复的第一行,例如,如果我有一个实例的三个重复项,它将只给我看其中两个。如何全部查看? 您可以使用与fromLast=TRUE 类似的方法。类似DT[unique(DT[duplicated(DT) | duplicated(DT, fromLast = TRUE)]), which = TRUE]

以上是关于mysql数据库怎么删除重复数据?如果两行的 a和b两列都一样。那么说明是重复的 删除其中一行。的主要内容,如果未能解决你的问题,请参考以下文章

sql语句查询出的两行数据除了主键其他都一样,怎么去掉重复数据

mysql删除重复的数据(仅一个字段),sql怎么写

SQL SERVER怎么去掉重复数据?

Oracle中如何删除重复数据

mysql连表查询出现重复的数据怎么办

excel表中如何大批量删除数据?