Sql 如何在表中查找重复名称

Sql 如何在表中查找重复名称,sql,string,duplicates,oracle-sqldeveloper,Sql,String,Duplicates,Oracle Sqldeveloper,我有一张表,上面有人名、地址和职务。 这些名字有时会重复。如果两个人有相同的名字和地址,我必须进行比较,而我只需要保留他们的一份记录 Table: Data_Excel Name: P_Name Address: P_Address City: P_city 要查找重复项,可以执行以下操作: SELECT P_name, P_Address, P_city FROM Data_Excel GROUP BY P_Name, P_Address, P_city HAVING CO

我有一张表,上面有人名、地址和职务。 这些名字有时会重复。如果两个人有相同的名字和地址,我必须进行比较,而我只需要保留他们的一份记录

Table: Data_Excel
Name: P_Name
Address: P_Address
City:  P_city

要查找重复项,可以执行以下操作:

SELECT P_name,
  P_Address,
  P_city
FROM Data_Excel
GROUP BY P_Name,
  P_Address,
  P_city
HAVING COUNT(*) > 1;
要删除重复项,可以执行以下操作:

DELETE
FROM Data_Excel
WHERE rowid NOT IN (
    SELECT MIN(rowid)
    FROM Data_Excel
    GROUP BY P_Name,
      P_Address,
      P_city
    );
要插入亲临表,请执行以下操作:

INSERT INTO Person(id,name)
SELECT (SELECT MAX(id)+1 FROM Person),P_Name 
FROM Data_Excel WHERE P_Name NOT IN (SELECT name FROM Person)

这将为您提供具有相同p_名称和p_地址的记录。

请参见:呃,两个不同的人具有相同名称和地址的可能性如何?就像兄弟会里的两个约翰·史密斯?还是一对男女都有名字的已婚夫妇?这是您需要担心的事情吗?感谢您的及时回复,现在如果我必须在Person表中插入ID为的姓名以及Data_excel表中的姓名,请检查:一旦姓名不应存在于Person表中,就应添加姓名。您想先检查姓名是否存在于Person表中吗?如果不是,则插入它们;如果是,则不执行任何操作?这就是您想要的吗?是的,如果我在Data\u excel中有多个条目,我只需输入一次名称。感谢您的提示响应,现在如果我必须在Person表中插入名称,并使用Data\u excel表中的ID和名称,并选中:在Person表中不存在名称时应添加名称already@user408437. 我添加了一个简单的方法,如果我不从数据中删除重复的值,然后插入?persons表中的ID不是自动递增的,在这种情况下,我如何获取最后一个ID并为每个插入增加ID值?我编辑了我的答案。有没有不执行自动递增id的原因?谢谢,只是为了确保此查询将从Data\u excel向Person表插入名称,并且如果名称已经存在,则P\u名称不在SELECT name from Person中的位置将确保其尚未插入?
SELECT P_Name,P_Address,count(*)
FROM Data_Excel
GROUP BY P_Name,P_Address
HAVING count(*) > 1;