删除重复的SQL

时间:2019-07-13 04:35:26

标签: sql duplicates

我有4列A,B,C,D。我需要从仅A列是主键的地方删除重复项。重复项可以是B,C,D的1个或2个或3个值。

例如:

SELECT DISTINCT p.txt_reqId, ? as SearchValue, ? as Asset, ? as IPV4 address 
FROM ... WHERE d.value like ?

预期结果

A B C D
--------    
1 1 1 1
1 1 2 1
1 1 2 1 (COLUMN IS DUPLICATE BECAUSE VALUE IN C IS SAME)
1 1 2 2
1 1 2 2 (COLUMN IS DUPLICATE BECAUSE VALUES IN C AND DIS SAME)

2 个答案:

答案 0 :(得分:3)

根据描述,我可以说简单的区别应该有所帮助:

SELECT DISTINCT A, B, C, D FROM Table

答案 1 :(得分:0)

如果A确实是主键,那么您需要这样的东西:

select min(a) as a, b, c, d
from t
group by b, c, d;

注意:在示例数据中,A不是主键。

如果要删除重复项,则:

delete from t
    where t.a > (select min(t2.a)
                 from t t2
                 where t2.b = t.b and t2.c = t.c and t2.d = t.d
                );