使用通配符在MySQL数据库中查找重复数据
我正在努力创建一个工作查询来搜索数据库中可能存在的重复数据 使用传统方法不起作用,因为看起来像123456和123456的数据应该被视为相同 请你们帮我写一个查询,搜索这些类型的副本 数据都在一个字段中,我们称之为“数字”使用通配符在MySQL数据库中查找重复数据,mysql,sql,database,duplicates,wildcard,Mysql,Sql,Database,Duplicates,Wildcard,我正在努力创建一个工作查询来搜索数据库中可能存在的重复数据 使用传统方法不起作用,因为看起来像123456和123456的数据应该被视为相同 请你们帮我写一个查询,搜索这些类型的副本 数据都在一个字段中,我们称之为“数字” Sample data: id | number 0 | 123456 1 | 124355 2 | 123432
Sample data:
id | number
0 | 123456
1 | 124355
2 | 123432
3 | 123 456
Expected output:
id | number
0 | 123456
3 | 123 456
提前感谢您可以替换空格,例如:
select replace(number, ' ', '') , count(*)
from my_table
group by replace(number, ' ', '')
对于获取行过滤器,结果的计数(*)大于1
我建议另一种解决方案,使用@scaisEdge在正确答案中使用的替换技巧
SELECT
a.id, a.number, b.id as dup_id, b.number as dup_number
FROM
mytable a,
mytable b
WHERE
a.id <> b.id and
a.number = replace(b.number, ' ', '');
选择
a、 id,a.编号,b.id作为dup_id,b.编号作为dup_编号
从…起
我的表a,
mytable b
哪里
a、 id b.id和
a、 编号=替换(b.编号,'','';
这将生成一个“报告”,以确定哪个是“源”值,哪个是“复制”值
我创建此示例是为了试验这两种方法。请共享示例数据和预期输出空间,这是唯一的问题,还是存在其他情况?
SELECT
a.id, a.number, b.id as dup_id, b.number as dup_number
FROM
mytable a,
mytable b
WHERE
a.id <> b.id and
a.number = replace(b.number, ' ', '');