1

ユーザー名列のすべての重複を基本的に検索する次のクエリがあります。

SELECT  `username` 
FROM  `instagram_user` 
GROUP BY  `username` 
HAVING COUNT( * ) >1

テーブルに一意のユーザー名が 1 つだけ残るように、すべての重複を削除するにはどうすればよいですか? テーブルに一意のユーザー名が 1 つある限り、どのエンティティが永続化または削除されるかは気にしません。

4

3 に答える 3

0

これが SQL サーバー用かどうかわからない場合は、mysql で同様のコードを試すことができます。

;With CteUsers AS(

SELECT *,ROW_NUMBER() OVER (PARTITION BY username Order by username) AS ROWID
FROM(

SELECT PkId, `username` 
FROM  `instagram_user`
)tbltemp)
SELECT * FROM CteUsers; 

これは次のようになります

PkId username RowId
1     xx        1
2     xx        2
....

次に、RowId > 1 の場所を削除します

;CteUsers AS(

    SELECT *,ROW_NUMBER() OVER (PARTITION BY username Order by username) AS ROWID
    FROM(

    SELECT PkId, `username` 
    FROM  `instagram_user`
    )tbltemp)
  DELETE instagram_user WHERE PkId iN (SELECT PkId FROM CteUsers  WHERE ROWID > 1);
于 2013-10-02T01:53:59.397 に答える