0

我试图在字段仅部分匹配的用户表中返回重复记录,并且匹配的字段内容是任意的。我不确定我是否解释得很好,所以这是我可能会运行的查询,以通过一些独特的字段获取重复的成员:

SELECT MAX(id)
FROM members
WHERE 1
GROUP BY some_unique_field
HAVING COUNT(some_unique_field) > 1

我想将同样的想法应用于电子邮件字段,但不幸的是,我们的电子邮件字段可以包含多个电子邮件,用逗号分隔。例如,我希望将其电子邮件设置为“user@someaddress.com”的成员作为另一个在其字段中具有“user@someaddress.com”、“someotheruser@someaddress.com”的成员的副本返回。GROUP BY显然不会按原样完成。

4

2 回答 2

0

这对我有用;可能不会做你想做的事:

SELECT MAX(ID) FROM members WHERE Email like "%someuser%" GROUP BY Email HAVING COUNT(Email) > 1

于 2010-01-21T21:28:08.143 回答
0

这样的事情可能对你有用:

SELECT *
FROM members m1
inner join members m2 on m1.id <> m2.id
    and (
        m1.email = m2.email
        or m1.email like '%,' + m2.email
        or m1.email like m2.email + ',%'
        or m1.email like '%,' + m2.email + ',%'
    )   

这取决于当有多个电子邮件地址时,您的电子邮件地址的格式是否一致。如果逗号后总是有空格,或者引号实际上是数据的一部分,您可能需要稍微修改查询。

于 2010-01-21T21:16:22.290 回答