当前位置: 首页 > 面试题库 >

删除具有重复值的行

路雅懿
2023-03-14
问题内容

我必须清理具有重复行的表:

id: serial id
gid: group id
url: string <- this is the column that I have to cleanup

一个gid可能具有多个url值:

id    gid   url
----  ----  ------------
1     12    www.gmail.com
2     12    www.some.com
3     12    www.some.com <-- duplicate
4     13    www.other.com
5     13    www.milfsome.com <-- not a duplicate

我想对整个表执行一个查询,并删除gidurl重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。


问题答案:

;WITH x AS
(
SELECT id, gid, url, rn = ROW_NUMBER() OVER
(PARTITION BY gid, url ORDER BY id)
FROM dbo.table
)
SELECT id,gid,url FROM x WHERE rn = 1 – the rows you’ll keep
– SELECT id,gid,url FROM x WHERE rn > 1 – the rows you’ll delete
– DELETE x WHERE rn > 1; – do the delete


对第一个选择满意(表示您将保留的行)后,将其删除并取消对第二个选择的注释。对此表示满意后,它指示要删除的行,将其删除并取消注释该删除。

如果您不想删除数据,只需忽略SELECT…下的注释行即可。



 类似资料:
  • 我想删除a列和b列中的空值行。我已设法找到具有以下内容的行: 如何删除这些行?

  • 我有一个数据帧重复行除了一个值。我想过滤掉它们,只保留值较高的行。 等等。 因此,例如,需要比较具有skill_a和相同User_ID的行,并且只保留具有最近一年的行。 仅按用户ID提供组的行数。 只给了我一个系列,我无法合并回df。 反对的想法? 谢谢你

  • 问题内容: 我有三列的表:,和 有重复的字段。我想删除所有具有相同的行为别人 ,除了 对最近更新的一个。 因此,如果表包含这些行: 然后,我只想保留这些行: 您如何在SQL中做到这一点?我想象会从具有重复值的行中删除单个random(?)行,但是如何使其除最近更新的行之外的 所有 行删除呢? 问题答案: 您可以使用左联接来执行此操作: 这意味着对于每一行,它会寻找更新日期最近的另一行,如果有更新日

  • 问题内容: 我需要执行分组依据,但只能在满足条件的行上执行,否则返回不满足条件的所有行。例如,在下表中,我只希望对“活动”字段中具有“ 1”的行进行分组,并返回所有没有的行。 表格(ID,标签,有效): 将返回: 问题答案: 这是我能想到的最简单的方法。这是group by中的一个案例。如果满足条件,则按标签分组,否则按主键分组。 如果要按活动分组并标记: 编辑:我误解了您要分组的字段。现在已更正

  • 名 Middlename lastname dob 地址 城市 状态 电话 验证日期 它有许多相同的行,除了有效日期。例如: 我希望运行一个脚本,删除除最后一列()以外的所有匹配的重复项,只在表中保留以下内容,这是: 它不起作用,实际上弹出以下错误: 另外,我想根据字母表的最后一个字母分阶段运行它。因此,需要在某个地方添加类似这样的lastname。