PHPMYAdmin で、Web クローラーを実行しています。Web クローラーは時々同じ URL を取得します。Web クローラーでは、何千ものリンクのインデックスが作成されており、リンクの重複は望ましくありません。SQLで同様の行を削除する方法はありますか(唯一の違いはidフィールドです)
質問する
61 次
2 に答える
1
DELETE
最大 ID (最新) の URL を除くすべての URL を使用できます。
DELETE a
FROM tbl a
LEFT JOIN (
SELECT MAX(id) AS id
FROM tbl
GROUP BY url
) b ON a.id = b.id
WHERE b.id IS NULL
これを行った後、url フィールドに一意の制約を設定することをお勧めします。
ALTER TABLE tbl ADD UNIQUE idx_unique_url (url);
于 2012-08-16T18:38:09.190 に答える
0
テーブルに名前が付けられthe_table
、そのフィールドがid
(一意のフィールド)およびurl
である場合、次のように記述できます。
DELETE
FROM the_table
WHERE id NOT IN
( SELECT *
FROM ( SELECT MIN(id)
FROM the_table
GROUP BY url
) t
)
;
(他のフィールドもあり、を除いてすべてのフィールドが同一である行のみを削除したい場合は、それらのフィールドを一緒に句にid
追加するだけです。)GROUP BY
url
于 2012-08-16T18:35:28.223 に答える