删除记录的重复项但保留1(不带标识符)

时间:2013-08-05 12:21:02

标签: c# sqlite duplicate-removal

假设我们有这些数据:

rc_id      phonenumber
1               0
2               0
5               1
5               3
5               3
5               3 

我希望删除匹配rc_id 5和phonenumber 3的记录,同时保留至少1个

最终结果应为:

rc_id      phonenumber
1               0
2               0
5               1
5               3

注意:我不想使用唯一标识符

我现在正在使用此声明,但我注意到这也删除了所有其他重复项。

cmd.CommandText = "DELETE FROM tbl_data WHERE rc_id='5' AND phonenumber='3'";

3 个答案:

答案 0 :(得分:0)

你可以在()

上使用RowNumber()
delete from tbl_data where  Rownumber() Over(partition by rc_id, phonenumber Order by rc_id) > 1

答案 1 :(得分:-1)

设置rowcount 1 从tbl_data删除 其中rc_id ='5'和phonenumber ='3'

答案 2 :(得分:-1)

这个怎么样:

cmd.CommandText = "DELETE FROM tbl_data WHERE rc_id='5' AND phonenumber='3'
                   LIMIT (SELECT COUNT(*)-1 FROM tbl_data WHERE rc_id='5' AND phonenumber='3')";