で更新のためのターゲットテーブル 'NAME'を指定することはできません。this解を、重複しているMySQL DBのテーブルのデータに適用しようとしています。そのようなエラーが発生します。FROM句
SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause
DELETE NAME FROM NAME
WHERE NAME.id NOT IN
(SELECT MIN(id)
FROM NAME GROUP BY col1, col2)
また、エイリアスを割り当ててみましたが、成功しませんでした。 このエラーの原因は何ですか? これは一般的に、SQLスクリプトが周期的なプロセスを生成できることを指摘していますが、実際にはこれに関連することはありません - DELETE
とSELECT
の2つの選択が切り離されていることは明らかです - エンジンはSELECT
を1回、 DELETE
です。 なぜこのエラーが発生し、実際にテーブルを重複排除することができますか? =)
クエリは、適用しようとしているソリューションのクエリとはまったく異なります。あなたは 'NOT IN'を使っているのに対し、彼らは結合を使用します。 – eggyal
@eggyalコメントへの私のリンクは、回答ではなく、 –
です。私はそれに気付かなかった。そのコメントは、SQL Server固有のものです。その答えで与えられた結合がMySQLで動作することがわかります。 – eggyal