0

PHPMYAdmin で、Web クローラーを実行しています。Web クローラーは時々同じ URL を取得します。Web クローラーでは、何千ものリンクのインデックスが作成されており、リンクの重複は望ましくありません。SQLで同様の行を削除する方法はありますか(唯一の違いはidフィールドです)

4

2 に答える 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 BYurl

于 2012-08-16T18:35:28.223 に答える