如何从 table 中查找重复的名称?

How to find duplicate names from table?

我知道我们可以使用 GROUP BYHAVING COUNT > 1。但这在您有重复数据时有效。我有一些不同的数据。

Id Names
1  Rahul S
2  Rohit S
3  Rishu
4  Sinu
5   Rahul S
6  Rohit  S

上面tableid 1和5相同,2和6也相同。但是当我使用 group by 时,由于空格,它被认为是不同的。那么我如何编写一个带有模糊逻辑的查询,它会 return 这些重复数据。

**更新

谁能帮我做一个查询,该查询将从特定列中删除空格并在其上添加一个假想的列,我们可以通过计数 > 1

对其进行分组

SELECT replace(ltrim(rtrim(name)),' ','') as no_space FROM table GROUP BY no_space HAVING count(*) > 1 ORDER BY no_space;

您是否尝试过在选择数据时删除 spaces?

这样做应该可以将字符串中的 space 剪切掉,并提供类似的数据。请记住,我的意思是删除双 spaces 并将其替换为 1 space,然后对数据

进行左右 trim

类似这样的事情:

REPLACE(LTRIM(RTRIM(colName)), '  ', ' ')

只要记住包括 having Count > 1

您可以使用 trim SELECT trim(姓名),trim(count(姓名)) FROM tablename 按 trim(姓名)

分组

您可以使用 REPLACE 函数删除空格。

我会将不带空格的字符串保存到一个新列中,并在其上使用分组依据。 喜欢:

Select <values you are looking for>, replace(Names, ' ', '') as d 
from <Table name> 
group by d

我创建了 table 并插入了您的 data.Try 这个:

DROP TABLE IF EXISTS Emp;

CREATE TABLE Emp (Id INT, Name VARCHAR(50));

INSERT INTO Emp (Id, Name) VALUES
(1, 'Rahul S'), (2, 'Rohit S'), (3, 'Rishu'), (4, 'Sinu'), (5, ' Rahul S'),(5, 'Rohit  S');

    select * from Emp  Group by Name Having Name like '%Rohit%S%'
        Id  Name
1   5   Rohit  S
2   2   Rohit S

带通配符的查询:

select * from Emp  Group by Name Having Name like '%_____%_%'

    Id  Name
1   5    Rahul S
2   1   Rahul S
3   5   Rohit  S
4   2   Rohit S