如何从 table 中查找重复的名称?
How to find duplicate names from table?
我知道我们可以使用 GROUP BY
和 HAVING 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
我知道我们可以使用 GROUP BY
和 HAVING 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