gpt4 book ai didi

sql - 从 SQL Server 表中删除重复项

转载 作者:行者123 更新时间:2023-12-04 13:50:22 26 4
gpt4 key购买 nike

我的 SQL Server 表中有很多重复的记录,如下所示:

 SID    Username                                InQueue
------------------------------------------------------------------
162 peeeer2 492 2017-01-18 12:20:21.820 0 354
2791 peeeer2 460 2017-01-11 00:00:00.000 1 NULL

此处不需要的记录是我为其设置了 InQueue = true 的 peeeer2 用户。我需要删除所有那些 InQueue 列设置为 1 的重复项,另一个条件是用户名实际上是重复项...

表名为SearchedUsernames:

delete from SearchedUsernames
where Username ??

有人可以帮我解决这个问题吗?

编辑:

@TimSchmelter 太棒了,这很有魅力。但是我仍然收到错误消息。我需要先删除该表的相邻 FK。例如,当我在名为 UserTransactions 的相邻表中有一个相应的 FK 记录时,如下所示:

 ID      SID                              
----------------
162 162
2791 2791

我需要先删除这个相邻表中的所有记录,然后使用您编写的查询删除重复项。但是,这次我只想删除那些具有重复记录并已设置 InQueue = 0 的记录;

所以场景看起来像这样:

  1. 从相邻表 UserTransactions 中的两个副本中删除 FK 记录 SID

  2. 然后执行 DTV 和 Tim 编写的查询,稍作更改以仅删除那些重复且已设置 InQueue = 0 的记录;

最佳答案

WITH cte AS (
SELECT Username, inqueue,
ROW_NUMBER() OVER (PARTITION BY Username ORDER BY InQueue ASC) AS RN
FROM searchedUsernames
)
DELETE FROM cte
WHERE RN > 1;

如果怕多个Inqueue=0,那就用RANK

WITH cte AS (
SELECT Username, inqueue,
RANK() OVER (PARTITION BY Username ORDER BY InQueue ASC) AS RN
FROM searchedUsernames
)
DELETE FROM cte
WHERE RN > 1;

关于sql - 从 SQL Server 表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41719508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com