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

时间:2015-06-01 04:30:13

标签: mysql sql duplicates trim

我有一个包含3列的“partner_entries”表:our_ref | partner_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相同但后面有空格的那些,我该怎么做?

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

在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