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

时间:2016-09-13 06:55:38

标签: python psql peewee

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

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

在上表中,id 1和5相同,2和6也相同。但是当我使用group by时,因为空格而算不同。那么如何用模糊逻辑编写一个会返回这些重复数据的查询。

**更新

有人可以帮我查询一个查询,该查询将从特定列中删除空格并添加一个虚拟列,我们可以通过计数>来对其进行分组1

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

4 个答案:

答案 0 :(得分:1)

您可以使用REPLACE功能删除空格。

我会将没有空格的字符串保存到新列中并使用group by。 像:

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

答案 1 :(得分:0)

您是否尝试在选择数据时删除空格?

这样做应该剪切字符串中的空格,并提供类似的数据。请记住,我的意思是删除双空格并用1个空格替换它,然后对数据进行左右修剪

这样的事情:

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

请记住包括有计数&gt; 1

答案 2 :(得分:0)

你可以使用修剪 SELECT trim(name),trim(count(name))FROM tablename group by trim(name)

答案 3 :(得分:0)

我创建了表格并插入了你的数据。试试这个:

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