我正在使用 PostgreSQL 数据库。我有如下数据。
id name1 name2 modified_date
- - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
40 Balfe | Pat | 2010-10-01 17:48:44.804823
41 Battigan | David |
42 Balfe | Pat | 2010-10-01 12:46:49.627593
44 Balfe | Pat | 2010-10-04 14:04:28.72415
45 Balfe | Pat |
46 Balfe | Pat | 2010-10-01 17:30:39.193153
47 Balfe | Pat |
我想从表中删除一些行。删除的条件是:
- 它将删除
modified_date = Null
的重复记录
--> 不应删除重复记录的一份副本。 - 具有修改日期的记录不应被删除,尽管它们是重复的。
从上表中,应删除 ID 为 47
或 45
的记录。
最佳答案
此记录应删除所有带有 modified_date Is Null
的记录,其中存在具有相同 name1
和 name2
的另一条记录,该记录也具有 modified_date为空
。
id
最低的记录不会被删除。
Delete From your_table t1
Where modified_date Is Null
And Exists ( Select 1
From your_table t2
Where t2.name1 = t1.name1
And t2.name2 = t2.name2
And t2.modified_date Is Null
And t2.id < t1.id
)
关于sql - 根据条件删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854254/