如何在有条件的情况下删除SQL Server中的重复行?

Argorgin

我有一个这样的表:

Id   GroupId  StdId  Active
---------------------------
1    1        1      true
2    1        2      false
3    1        1      false
4    1        1      false
5    1        1      true
6    1        2      true

我想删除重复的行,但是如果Active具有true / false值,请保留true值并删除false值。

例如我想要这个清单

Id   GroupId  StdId  Active
---------------------------
1    1        1      true
6    1        2      true
乔治·贝索斯(Giorgos Betsos)

您可以使用以下查询:

;WITH ToDelete AS (
  SELECT Id, GroupId, StdId, Active,
         ROW_NUMBER() OVER (PARTITION BY GroupId, StdId
                            ORDER BY Active Desc, Id) AS rn
  FROM mytable 
)
DELETE FROM ToDelete
WHERE (rn > 1) OR (rn =1 AND Active = 0)

以上假设Active实际上是一个bit字段。

ROW_NUMBER帮助我们识别重复的记录。具有的Active=1将优先Active=0于每个GroupId, StdId分区中具有的那些使用a,CTE我们可以轻松删除所有重复的行,从而过滤掉顶层记录(如果是的话)Active=1

演示在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在有条件的情况下使用RemoveAll删除列表中的多个项目?

如何在有条件的情况下减去熊猫中的两列

如何在有条件的情况下控制 YAML 中的作业流?

有条件的情况下如何避免重复?

在有条件的情况下,在巨大的SQL Server表中计算总行数的最快方法是什么

R:在有条件的情况下将数据从行添加到列

在有条件的情况下退出 Jess 中的规则执行

Codeigniter中如何在没有条件的情况下选择联接多个表?

如何在没有条件的情况下将行从一列绑定到SQL Server中的另一列

抓取表中的所有行,并在有条件的情况下抓取一行

我想删除列表的重复项,是否有可能在有条件的情况下使用count()函数?

python / pandas在有条件的情况下将值写入前一行

mysql-在有条件的情况下选择并插入查询到多个表中

如何在不使用 for 循环的情况下有条件地从数据框中删除列?

在有条件的情况下在keras中实现自定义损失功能

如何在VBA中删除带有条件的重复行

熊猫在有条件的情况下将值从一行复制到另一行

如何在R中有多个新列是有条件的情况下使用R中的多个列来表示一列的值?

如何在有条件的剧本中向条件字典添加键/值

如何在有条件的情况下删除y_train数组中值的百分比

如何在有条件的第三次逗号后grep行

如何在满足所有其他参数的情况下有条件地返回一行?

如何在有条件的展开中传递数据?

熊猫-如何在有条件的groupby中创建多个列?

如何在有条件的php中包含php文件

如何在有条件的表中识别数据不存在的条目

如何在有条件的Rails中建立内部联接?

在R中没有if语句的情况下有条件地从向量中删除

如何在有条件的情况下替换冲突(对于SQLite)?