sql - 如何从唯一代码列中查找重复项并删除它们附加的行,同时仍保留原始行?
问题描述
我在我的 azure sql server 中有一个名为 dbo.SQL_Transactional 的表,并且有列的标题为代码、销售日期、分支代码
code 是我的主键,所以如果有 2 行或更多行具有相同的代码,它们是重复的,需要删除。我该怎么做?我不需要担心 saledate 或 branchcode 是否重复,因为如果代码重复,那么我只需要能够删除整个重复行。
解决方案
如果您只想删除重复的行,请尝试可更新的 CTE:
with todelete as (
select t.*, row_number() over (partition by code order by code) as seqnum
from t
)
delete from todelete
where seqnum > 1;
如果您只想选择一行,那么您将使用where seqnum = 1
.
推荐阅读
- c# - Xamarin.Forms 在 xaml 中嵌入原生视图
- wordpress - Wordpress 页面和帖子不会更新
- amazon-s3 - 在 hive 中创建一个视图的 csv 文件并将其放入 s3 中,标题不包括表名
- cypher - Cypher:节点创建问题
- c# - 在 Postgres 中使用存储过程更新多行
- java - @GetMapping 通过 application.yml 使用数组参数
- search - 在 vim 中搜索和替换被抽出的文本的内容
- kubernetes - 我可以使用 Cloud Router 从本地访问私有 GKE 主端点吗?
- java - 导入 JavaFX 包以通过命令行/CMD 运行
- python - Scrapy 下载特定类型的文件