使用LIKE在MySQL中查找重复记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用LIKE在MySQL中查找重复记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1531字,纯文字阅读大概需要3分钟。
内容图文
![使用LIKE在MySQL中查找重复记录](/upload/InfoBanner/zyjiaocheng/905/924152821cda459eb9d6474126871f59.jpg)
我想在使用MySQL的客户表中按名称查找所有重复记录,包括那些完全不匹配的记录.
我知道我可以使用查询
SELECT id, name FROM customer GROUP BY name HAVING count(*) > 1;
查找完全匹配的所有行,但我想找到与LIKE子句匹配的所有重复行.例如,可能有一个名为“Mark’s Widgets”的客户和另一个名为“Mark’s Widgets Inc.”的客户.我希望我的查询能够找到这些重复项.所以有些东西
SELECT id, name AS name1 ... WHERE name1 LIKE CONCAT("%", name2, "%") ...
我知道这完全不正确,但这就是主意.这是有能力的架构:
mysql> describe customer;
+-----------------------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------+------+-----+------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(140) | NO | | NULL | |
...
编辑:为了澄清,我想找到所有重复,而不仅仅是一个特定客户名称的重复.
解决方法:
这样做很有可能,但在你开始之前,你需要定义关于什么是匹配和什么不匹配的规则,没有它你就不能去任何地方.
例如,您可以忽略名称的第一个和最后3个字符并匹配中间字符,或者您可以选择更复杂的逻辑,但是没有实现您想要的魔术方法,您将需要编写逻辑代码.无论您的选择是什么,它都需要在您开始之前和我们真正帮助之前进行定义.
这里没有mysql所以请原谅语法错误(如果有的话,它的t-sql语法),但我正在考虑自我加入
SELECT
t1.ID
FROM MyTable t1
LEFT OUTER JOIN MyTable t2
ON t1.name LIKE CONCAT('%', t2.name, '%')
group by t1.ID
HAVING count(*) > 1
内容总结
以上是互联网集市为您收集整理的使用LIKE在MySQL中查找重复记录全部内容,希望文章能够帮你解决使用LIKE在MySQL中查找重复记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。