当前位置: 首页 > 知识库问答 >
问题:

如何识别在SQL服务器[重复]中两列完全匹配的行

吕冠宇
2023-03-14

我的问题可能听起来很奇怪,但请耐心听我说。这就是我所拥有的:

表产品:

ProductName     Cost   
Pen A           1.00  
Pen A           1.00  
Pen B           1.00   
Pen A           2.00  
Pen C           3.00  
Pen C           3.00  
Pen C           3.00

如何从中删除真正的重复项?如果您查看数据,您可以看到Pen C有三行数据完全相同。笔A有两行数据相同,一行成本不同。我不想取消“钢笔A”。

下面是一个简单的group by语句:

SELECT ProductName,Cost FROM PRODUCTS GROUP BY ProductName,Cost HAVING COUNT(*) > 1

这不起作用,因为它也会拿起“钢笔A”。

感谢您的帮助。非常感谢。

共有3个答案

东门仲卿
2023-03-14

在清理您喜欢的任何方式之后,您可能想考虑在2个列中创建一个约束索引和/或验证以确保在插入新行之前不存在组合。

祝你好运

张丰
2023-03-14

您可以使用CTERow_Number()一起删除Dupes

实例

;with cte as (
    Select * 
          ,RN = Row_Number() over (Partition By ProductName,Cost Order By (Select null))
    from PRODUCTS 
)
Delete from cte where RN>1

更新表

ProductName Cost
Pen A       1.00
Pen B       1.00
Pen A       2.00
Pen C       3.00
禄烨然
2023-03-14

不使用联接或子查询的快速方法是创建具有相同结构的表PRODUCTS_TEMP,并仅插入唯一的行:

INSERT INTO PRODUCTS_TEMP 
SELECT DISTINCT ProductName,Cost FROM PRODUCTS;

然后,您可以删除PRODUCTS表并将PRODUCTS_TEMP重命名为PRODUCTS:

DROP TABLE PRODUCTS;
ALTER TABLE PRODUCTS_TEMP RENAME TO PRODUCTS;

现在您已经过滤了您的表。

 类似资料:
  • 我知道Azure Service Bus有一个重复消息检测功能,可以删除它认为与其他消息重复的消息。我想使用此功能来帮助防止重复传递。 我好奇的是服务如何确定两条消息实际上是重复的: 考虑了消息的哪些属性 是否考虑了消息的内容 如果我发送两条内容相同但消息属性不同的消息,它们是否被视为重复

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法:

  • 本文向大家介绍如何在PHP中识别服务器IP地址?,包括了如何在PHP中识别服务器IP地址?的使用技巧和注意事项,需要的朋友参考一下 可以使用以下代码行标识服务器IP- 可以使用下面的代码行来标识端口- 对于5.3和更高版本的PHP,可以使用以下代码行- 当运行独立脚本(未通过Web服务器运行)时,可以使用此功能。

  • 问题内容: 如何识别PHP中的服务器IP地址? 问题答案: 像这样的服务器IP: 这是港口

  • 问题内容: 如何编写一个与相同字符(或理想情况下,同一组)的N个重复恰好匹配的表达式?基本上是做什么的,但是有一个重要的限制:如果主题重复N次 以上, 则表达式应该失败。例如,给定和字符串,表达式应该匹配和不。 我不专注于任何特定的方言,可以随意使用任何语言。请不要发布仅适用于此特定示例的代码,我正在寻找一个通用的解决方案。 问题答案: 使用负前瞻 和 负后瞻。 这将是正则表达式:除了Python

  • 我正在运行一个MySQL客户端实用程序,并收到这个众所周知的错误: 服务器时区值“KST”无法识别或表示多个时区。如果要利用时区支持,必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更特定的时区值。 从官方Ubuntu库(mysql Ver 14.14 Distrib 5.7.26)安装了数据库引擎的现成Ubuntu 2019.04。 如何修复它? 附加 不返回任