SQL-基于某些列而不是其他列删除重复项

SQL-基于某些列而不是其他列删除重复项,sql,Sql,我真的不知道如何清楚地表达这个问题,所以我可以举个例子: Column1 Column2 Column3 A 100 239.1 A 100 0 A 101 191.3 B 99 0 B 99 12.43 我希望能够看到哪些重复项仅与第1列和第2列相关,然后根据它们在第3列中的值比较这些重复项,并删除具有0的重复项 因此,生成的表如

我真的不知道如何清楚地表达这个问题,所以我可以举个例子:

Column1    Column2   Column3
A          100       239.1
A          100       0
A          101       191.3
B          99        0
B          99        12.43
我希望能够看到哪些重复项仅与第1列和第2列相关,然后根据它们在第3列中的值比较这些重复项,并删除具有0的重复项

因此,生成的表如下所示:

    Column1    Column2   Column3
    A          100       239.1
    A          101       191.3
    B          99        12.43

我不完全确定如何做到这一点,但任何帮助将不胜感激

您需要将表连接到它本身,类似于如果表被称为eg的数字

select yourcols  
    from figures a, figures b  
    where a.col1 = b.col1  
    and a.col2 = b.col2  
    and (a.col3 = '0' or b.col3 = '0')

如果您高兴的话,可以将其更改为delete…

根据您的数据,只需从column3=0的选项卡中删除,但这可能过于简化

这将检查第3列中的0和其他行0:


如果返回正确的行,只需更改为DELETE…

您可能正在查找GROUPBY子句

Select column1, column2, SUM(column3) as col3 GROUP BY column2; 

对于视图,行应该可以工作

从表t中选择col1、col2、col3,其中col3>0或不在表t2中选择col1、col2,其中col3>0和t.col1=t2.col1和t.col2=t2.col2

如果要删除这些行,请尝试


从表t中删除,其中col3=0和col1,col2=ANY从表t2中选择col1,col2,其中col3>0和t.col1=t2.col1和t.col2=t2.col2

您给出了示例,但没有解释示例中的逻辑column2也可以是0?您使用的是什么数据库?请适当地标记。可以稍微扩展一下您的示例。实际上,只需删除列3为0的所有行即可获得相同的结果。请定义您使用的环境类型,即MS SQL Server ie.T-SQL?为什么不将代码格式化为代码?我真的不明白为什么要恢复编辑,这样更容易阅读您的示例。
Select column1, column2, SUM(column3) as col3 GROUP BY column2;