首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写删除表中重复项的查询?

如何编写删除表中重复项的查询?
EN

Stack Overflow用户
提问于 2011-01-26 00:21:13
回答 4查看 1K关注 0票数 3

给定一个与此类似的表,名为VehicleUser:

VehicleUserId | VehicleId | UserId

1%以上的时间段,*|1001*|2

2%*|1001*|2

3%以上的时间段:*|2

4%*|3。

5%*|3。

6%*|3。

如何编写可以删除重复项的查询?除了不同的VehicleUserId之外,行2和3与行1相同,而除了不同的VehicleUserId之外,行5和6与行4相同。

EN

回答 4

Stack Overflow用户

发布于 2011-01-26 00:26:35

代码语言:javascript
复制
;with cte as (
select row_number() over 
    (partition by VehicleId, UserId order by VehicleUserId) as rn
from VehicleUser)
delete from cte
where rn > 1;
票数 6
EN

Stack Overflow用户

发布于 2011-01-26 00:24:53

您可以使用exists子句过滤重复项,如下所示:

代码语言:javascript
复制
delete  v1
from    VehicleUser v1
where   exists
        (
        select  *
        from    VehicleUser v2
        where   v1.VehicleId = v2.VehicleId
                and v1.UserId = v2.UserId
                and v1.VehicleUserId > v2.VehicleUserId
        )

在运行此命令之前,请通过将delete替换为select来检查它是否正常工作

代码语言:javascript
复制
select  *
from   VehicleUser v1
where  exists
       (
       ...

显示的行将被删除。

票数 5
EN

Stack Overflow用户

发布于 2011-01-26 00:29:09

以下是您独特的值:

代码语言:javascript
复制
select vehicleid, userid, min(vehicleuserid) as min_id
from vehicleuser
group by vehicleid, userid

您可以在删除任何内容之前将它们放入一个新表中,以确保拥有您想要的内容,然后删除vehicleUser或使用外部连接从vehicleUser中删除不在新表中的行。

在删除行之前进行调试更安全。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4796023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档