MySQL 在同一列中查找类似项

标签 mysql duplicates

我有一个包含名称和地址的 MySQL 数据库,但有一些重复的名称,仅包含部分地址,例如

Name  | Address 
========================
Smith | 10 Main St., Cincinnati, OH 45202
Smith | 10 Main St.

我需要一个 SQL 查询来选择具有重复名称和两个 LIKE 地址中较短的一个的所有行。我能够使用 GROUP BY 和 COUNT() 来精确重复,但我不知道如何将其应用于上面的示例中的子字符串。有任何想法吗?谢谢。

最佳答案

这样的事情应该有效:

select * from mytable as t1
 inner join mytable as t2
 on t1.Name = t2.Name
 and t1.Address like concat(t2.Address, '%')
 and t1.Address != t2.Address;

关于MySQL 在同一列中查找类似项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063519/

相关文章:

mysql - 错误类型 : ADODB. Recordset (0x800A0E79) 打开对象时不允许操作

mysql - 当数据库中的数据更新时,如何更新前端检索到的数据?

sql - 删除SQL Server中的重复记录?

javascript - 如何将字符串数组发送到数据库并一次搜索一个值

mysql - 在距离搜索和 mysql 中使用 join

php - 审核 MySQL 表并仅在批准后显示更改

excel - 从 Excel 电子表格中删除包含重复数据的行?

list - 在String Dart列表中查找重复的值

MySQL 计算 2 个表中的日期,但不计算重复日期

mysql - 使用 GROUP BY 删除重复项的查询