删除基于重复的两列值。

Posted

技术标签:

【中文标题】删除基于重复的两列值。【英文标题】:removing duplicate based two coulmn value. 【发布时间】:2014-07-03 14:12:08 【问题描述】:

我需要你们的帮助。

我的数据是这样的

A A value 1 value 2
A B value# value#
B A value# value#
D F value# value#
V F value# value#

我需要 A B 或 B A 一行中的任何一个。它应该看起来像这样

A A value 1 value 2
A B value# value#
B A value# value#  .....this record should be removed
D F value# value#
V F value# value#

请帮助解决这个问题。

谢谢大家

桑杰

【问题讨论】:

请帮助解决这个问题.. 被否决的原因是什么..... 【参考方案1】:

使用您的示例案例,您可以执行类似的操作

delete from table1 t1
where exists (select null
from table1
where t1.col1 = col2 and t1.col2 = col1 and t1.col1 > col1
)

但是如果你有,那不会删除重复的

A B
A B => won't be removed
A A

如果您的表中有代理键(如自动递增的 id),您可以这样做,这也会删除重复的 A B 之一

delete from table1 t1
    where exists (select null
    from table1
    where ((t1.col1 = col2 and t1.col2 = col1) or (t1.col1 = col1 and t1.col2 = col2) and t1.id > id
    )

【讨论】:

以上是关于删除基于重复的两列值。的主要内容,如果未能解决你的问题,请参考以下文章

基于MySql中的两列删除重复记录[重复]

在使用原始查询时选择比较 ormlite 中的两列值的行

根据 geom_tile() 热图中的两列值对行重新排序

怎样在一个表中,为重复率不同的两列建立一个复合唯一聚集索引,使性能最佳?

sql:选择由另一列分组的两列值的计数并获得两个计数的比率

基于两列值的sql排序