2

エントリが重複している mySQL テーブルがあります (場合によっては複数の重複がある可能性があります)。名前が示すように、重複したIDを含む可能性のあるidと呼ばれる列と、名前が示すように一意のIDを含む一意のIDと呼ばれる列があります。次の SQL ステートメントを使用して、重複する行を選択できます

SELECT id,
COUNT(id) AS NumOccurrences
FROM `TABLE 3`
GROUP BY id
HAVING ( COUNT(id) > 1 )

しかし、どうすればそれらを (1 つを除いてすべて) 削除できますか?

4

2 に答える 2

2
DELETE t1 FROM test t1, test t2 WHERE t1.unique_id > t2.unique_id AND t1.id = t2.id;
于 2012-07-23T22:29:04.463 に答える
1

UNIQUE INDEX一意の ID フィールドに a を追加する必要があります。これにより、後で重複が忍び込むのを防ぐことができます。

ALTER IGNORE `TABLE 3` ADD UNIQUE INDEX (`unique_id`);

IGNORE ビットは、値が「unique_id」の最初の行のみを保持します。また、列またはテーブル名にスペースを使用しないようにする必要があります。名前の周りにティックを使用する必要があるため、SQL の記述エラーが発生しやすくなります。

于 2012-07-23T23:35:03.300 に答える