1

データベースから重複データを削除しようとしています。ここで、Oracle データベースでこれを行う方法の良い例を見つけました。

その回答の一番下のクエリ (重複する行のみを選択する) は MySQL で機能しますが、削除クエリ (以下を参照) は機能しません...

"DELETE FROM studios as a
 WHERE a.id >
       ANY (SELECT b.id
              FROM studios as b
             WHERE a.name = b.name
               AND a.email  = b.email
            )"

私が得るエラーは次のとおりです。

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'a
 WHERE a.id >
       ANY (SELECT b.id
              FROM studios as b
           ' at line 1

そのため、正しい削除構文と使用する構文を探しましたが、クエリに問題は見つかりませんでした...何かアイデアはありますか?

4

2 に答える 2

2

このクエリを試してください -

DELETE t1 FROM studios t1
  JOIN (SELECT MIN(id) id, name, email FROM studios GROUP BY name, email) t2
    ON t1.id <> t2.id AND t1.name = t2.name AND t1.email = t2.email;
于 2012-02-01T09:28:01.373 に答える
0

この演算子は、MySQL のステートメントでASは機能しません。DELETE

これを試してください(未確認):

DELETE FROM a using studios a
WHERE a.id >
ANY 
(
    SELECT b.id
    FROM studios as b
    WHERE a.name = b.name
    AND a.email  = b.email
)
于 2012-02-01T09:23:12.950 に答える