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 语法从数据中删除换行符和其他符号
我有一个包含 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 语法从数据中删除换行符和其他符号