mysql - sql查找并删除带有trim的重复列

标签 mysql sql duplicates trim

我有一个包含 3 列的表“partner_entries”:our_ref |合作伙伴引用 | partner_tag 所有这 3 个字段构成主键。

我有一定数量的“重复”行,如下所示:

42 | abc | tag1  
42 | abc  | tag1 

如您所见,它并不是真正的重复,因为同一个词后面有一个空格。 我可以像这样根据 our_ref 和 partner_tag 检索重复项:

SELECT   COUNT(*) AS nb_duplicates, our_ref, partner_tag
FROM     partners_entries
GROUP BY our_ref, partner_tag
HAVING   COUNT(*) > 1

但它也需要一些行,其中 partner_ref 确实不同,我只想选择那些 partner_ref 相同但后面有空格的行,我该怎么做?

谢谢你的帮助

最佳答案

在 select 和 GROUP BY 子句中使用 TRIM:

SELECT   COUNT(*) AS nb_duplicates, our_ref, TRIM(BOTH '\n' FROM partner_ref), partner_tag
FROM     partners_entries
GROUP BY our_ref, TRIM(BOTH '\n' FROM partner_ref), partner_tag
HAVING   COUNT(*) > 1

使用扩展 TRIM从数据中删除换行符和其他符号的语法

SQL Fiddle

关于mysql - sql查找并删除带有trim的重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565661/

相关文章:

mysql - 如何在mysql中定义一个100亿行的key/value表?

list - 找到重复项时拆分列表 scala

php - 停止同时操作高争用对象

java - Hibernate session 不更新实体

php - 更新 Centos 软件包吗?

c# - GetBytes() 只能在二进制或 GUID 列上调用

mysql - 如何在 MySQL 中搜索 date_format 字段

一个表中最常出现在另一表中的 MYSQL 条目

c# - 确定数组是否包含重复值的最快方法是什么?

c# - 检测重复记录,只选择第一个并用 LINQ/C# 计数