sql 使用 trim 查找并删除重复的列

sql find and remove duplicate columns with trim

我有一个包含 3 列的 table "partner_entries":our_ref | partner_ref | partner_tag 其中所有这 3 个字段构成主键。

我有一定数量的 "duplicate" 行,如下所示:

42 | abc | tag1  
42 | abc  | tag1 

如您所见,它并不是真正的重复,因为在同一个词后有一个 space。 我可以检索基于 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 确实不同的行,我只想 select 那些 partner_ref 相同但后面有 space 的行,我该怎么做?

感谢您的帮助

在 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