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)