FROM 句で更新対象テーブル 'person' を指定することはできません

SQL の質問をブラッシングするときにこのような問題が発生しました
入力: 
人物テーブル: 
+----+----+ 
| id | email | 
+---- + ------------------+ 
| 1 | [email protected] | 
| 2 | [email protected] | 
| 3 | [email protected] | 
+-- - -----------------------+出力: 
+----+---------------------+ 
| id | 電子メール | 
+----+---------------------+ 
| 1 | [email protected] | 
| 2 | [email protected] | 
+-- - -----------------------+説明: [email protected] を 2 回繰り返しました。最小の ID = 1 を維持します。
 

SQL削除ステートメントを作成して、重複する電子メールをすべて削除し、最小の ID を持つ一意の電子メールを 1 つだけ保持します。

結果テーブルを任意の順序で返します(: delete ステートメントを記述するだけで済み、残りの結果は自動的にクエリされます)

消去

から

  人

どこ

  id が入っていません (電子メールで人物グループから min( id ) を選択します)

エラーが報告されます

FROM 句で更新対象テーブル 'person' を指定することはできません

更新テーブルを確認する場合

FROM 句で更新の対象テーブル「テーブル名」を指定することはできません。つまり、最初に同じテーブル内のいくつかの値を選択してから、このテーブルを (同じステートメント内で) 更新することはできません。つまり、次の値です。フィールドの値に基づいた判断に基づいてフィールドを更新することはできません。

クラシックに選択レイヤーを追加

消去

から

  人

どこ

  id NOT IN (SELECT * FROM ( SELECT min( id ) FROM person GROUP BY email ) t)

おすすめ

転載: blog.csdn.net/qq_43433185/article/details/130794274