我可以在子查询中使用“喜欢”吗?

时间:2019-10-09 16:35:14

标签: sql postgresql

我需要一个查询帮助,在我的数据库中,我有3个唯一的列,但有时我们会放一些“字符”来创建新行。现在,我需要确定这些情况,但是有很多行(接近50000),那么我需要知道其中哪一个是“重复的”(不是真正重复的,但是唯一字段是相似的)。假设您有两个用户的电子邮件“相同”,例如

email@enterprise.com
email +您的名字@ enterprise.com

我需要了解这些情况,但需要了解其他列,例如ID或用户名...

我尝试了子查询,但是在like子句中,我只能使用一行。

我想像...

select * from mytable where column like ('%'||select column from my table||'%);

我应该使用“重复操作”数据获取所有行,以便可以混合所有人。

谢谢! :D

1 个答案:

答案 0 :(得分:1)

我认为您可以将postgresql similarity function与连接到同一张表一起使用,希望该示例对您有所帮助:

select u1.id, u2.id, u1.email, u2.email from mytable as u1 
join mytable as u2
    on similarity(u1.email, u2.email) >= 0.3 /* approach more than 1 for more similarity */
    and u1.id <> u2.id /* different primary key */
order by u1.id, u1.email, u2.email