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;