sql - 我可以在子查询中使用“LIKE”吗
问题描述
我需要一些查询帮助,在我的数据库中我有 3 个唯一的列,但有时我们会放置一些“字符”来创建一个新行。现在,我需要识别这些案例,但是有很多行(接近 50000),然后我需要知道其中哪一个是“重复的”(不是真正重复,但唯一字段是相似的)。想象一下,您有两个拥有“相同”电子邮件的用户,例如
email@enterprise.com
email+yourname@enterprise.com
我需要知道这些情况,但还有其他列,如 ID 或用户名......
我尝试过使用子查询,但在like 子句中我只能使用一行。
我想像...
select * from mytable where column like ('%'||select column from my table||'%);
我应该得到所有带有“重复操作”数据的行,所以我可以混合每个人。
谢谢!:D
解决方案
我想你可以使用 postgresql相似函数,加入同一个表,我希望这个例子有帮助:
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
推荐阅读
- reactjs - 从 Firebase 获取数据不使用 React JS 显示?
- ios - Stripe ios paymentContext 和 paymentMethodViewController 有什么区别
- python - 如何在 XPath 中选择第二个 div 元素?
- ruby-on-rails - 使用rspec时如何打印当前页面响应
- assembly - 了解汇编基本代码
- javascript - 有没有相当于.Contains of c#的js
- mysql - 如何使用 python 与 MySQL 服务器上的其他客户端连接进行通信?
- calendar - 如何设计日历提醒/提醒系统
- python - 如何简洁地获取 Sympy 表达式的单位
- node.js - node.js 插入到 mongodb