1

我有一个有 4 列和数千条记录的表。我想删除基于三列重复的行(比如 col1、col2、col3)。我必须根据标准删除行,例如

1) found a row which has col1 and col2 equal and
2) in those duplicate record i have to delete those rows on which col3 is null- keep  one row
  (if no other record with combination of col1 and col2 doesn't have not null col3) 

col1 col2 col3
---- ---- ----
1    1    null
1    1    null
1    2    null
1    2    1
1    2    1
1    2    null
1    2    2
1    2    3

在此示例中,我想删除 1 或 2。3、4、5、6 中有重复的列,其中一些第三列不为空,我只想保留第三列不为空的一行(如果第三列也等于只保留一行)

4

2 回答 2

2

假设您有如下所示的数据:

col1 col2 col3
---- ---- ----
1 1 无
1 1 无
1 2 无
1 2 1
1 2 2
1 2 3
1 2 无

可以删除前两行,因为col1col2匹配,并且col3两者都为空?如果没有,这是我的sql:

DELETE FROM table_name A
WHERE  exists (
  SELECT 1
  FROM table_name B
  WHERE A.col1 = B.col1
  AND   A.col2 = B.col2
  AND   B.col3 is not null)
AND A.col3 is null
于 2012-07-20T13:24:01.460 回答
0
DELETE FROM table_name A WHERE ROWID > (SELECT min(rowid) FROM table_name B
WHERE A.clmn1 = B.clmn1 AND A.clmn2 = B.clmn2 AND A.clmn3 is NULL AND b.clmn3 is NULL);

检查这个..评论是否有任何错误。

于 2012-07-20T13:07:19.083 回答