1

重複行を見つけて削除する方法、または重複を一覧表示する方法については、たくさんのリストがあります。私がここで検索しようとした大量の応答の中で、それらは私が見つけた唯一の応答です。1時間経ってもまだ運がないので、質問をするだけだと思いました。

これは私が持っているサンプルデータです

Table Name: Customers
_____________________________
ID   | CompanyName
--------------
1    | Joes
2    | Wendys
3    | Kellys
4    | Ricks
5    | Wendys
6    | Kellys
7    | Kellys

このテーブルですべての重複を見つけられるようにする必要があり、その結果を、会社名と見つかった重複の数をリストする別のテーブルに入れます。

たとえば、上記の表では、次のような新しい表が必要です

Table Name: CustomerTotals
_______________________________
ID   | CompanyName  |   Totals
-------------------------------
1    | Joes         |    1
2    | Wendys       |    2
3    | Kellys       |    3
4    | Ricks        |    1

-----EDITは2つの応答の後に追加され、別の質問に遭遇しました------

回答ありがとうございます。反対はどうですか?CustomerTotals テーブルに存在しない Customers テーブルから新しいテーブル "UniqueCustomers" にアイテムを追加したいだけですか?

4

5 に答える 5

5

これを試して :

INSERT INTO CustomerTotals
(CompanyName, Totals)
SELECT CompanyName, COUNT(*)
FROM Customer
GROUP BY CompanyName

フィールドにID列を使用しIDます。

于 2012-07-10T20:16:46.373 に答える
0

上記の例は問題ありません。ただし、パフォーマンスを向上させるためcount(1)に代わりに使用する必要があります。この質問count(*)を読んでください。

于 2012-07-11T05:08:16.373 に答える
0

重複を取得するには、次のことができます

Insert into CustomerTotals (Id, CompanyName, Totals)
    Select min(Id), CompanyName, count(*) From Customers
    group by CompanyName  

そこで、結果が得られ、各会社名の最小IDが保持されます(結果に見られるように、元のテーブルの最初のIDが本当に必要な場合)。そうでない場合は、ID 列を使用できます

于 2012-07-10T20:18:28.220 に答える
0

重複を 2 番目のテーブルに挿入するだけの場合は、次のように使用します。

INSERT INTO CustomerTotals
(CompanyName, Totals)
SELECT CompanyName, COUNT(*)
FROM Customer
GROUP BY CompanyName
HAVING Count(*) > 1
于 2012-07-10T20:21:49.027 に答える