web-dev-qa-db-ja.com

テーブル内の重複する名前を見つける方法

個人名、住所、役職の表があります。名前は時々繰り返されます。 2人が同じ名前と同じ住所を持っているかどうかを、1つの記録だけを保持する必要がある場合と比較する必要があります。

Table: Data_Excel
Name: P_Name
Address: P_Address
City:  P_city
8
Mouzzam Hussain

重複を見つけるには、次のようにします。

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
    );

Personテーブルに挿入するには、次のようにします。

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)
15
Filipe Silva
SELECT P_Name,P_Address,count(*)
FROM Data_Excel
GROUP BY P_Name,P_Address
HAVING count(*) > 1;

これにより、同じP_NameP_Addressのレコードが得られます。

2
SajjadHashmi