我真的不知道如何清楚地说出这个问题,所以也许我会用一个例子:
Column1 Column2 Column3
A 100 239.1
A 100 0
A 101 191.3
B 99 0
B 99 12.43
我希望能够看到哪些副本仅与column1和column2有关,然后根据它们在column3中的值来比较这些重复项,并删除具有0的那些重复项。
所以我的结果表看起来像是:
Column1 Column2 Column3
A 100 239.1
A 101 191.3
B 99 12.43
我不完全确定如何做到这一点,任何帮助将不胜感激。
答案 0 :(得分:1)
您可能正在寻找GROUP BY子句
Select column1, column2, SUM(column3) as col3 GROUP BY column2;
答案 1 :(得分:0)
您需要将表连接到自身,例如(如果表格被称为“数字”)
NoMethodError: undefined method admin?' for nil:NilClass
以及当您感到满意时对删除的更改会找到要删除的行...
答案 2 :(得分:0)
根据您的数据,您只需DELETE FROM tab WHERE column3 = 0
,但这可能过于简化了。
这将检查0
中的<> 0
和其他行column3
:
select *
from tab as t1
where column3 = 0
and exists
(
select *
from tab as t2
where t1.column1 = t2.column1
and t1.column2 = t2.column2
and t2.column3 <> 0
)
如果返回正确的行,只需更改为DELETE
答案 3 :(得分:0)
视图行应该起作用
选择col1,col2,col3 FROM yourtable t WHERE col3&gt; 0 OR(col1,col2)NOT IN(SELECT col1,col2 FROM yourtable t2 WHERE col3&gt; 0 AND t.col1 = t2.col1和t。 col2 = t2.col2)
如果你喜欢删除那些行尝试
从yourtable删除t WHERE col3 = 0 AND(col1,col2)= ANY(SELECT col1,col2 FROM yourtable t2 WHERE col3&gt; 0 AND t.col1 = t2.col1 and t.col2 = t2.col2 )强>