私のcustomer
テーブルでは、ref
は自動インクリメントで、ID
は顧客識別番号です。したがって、顧客ごとに複数のID
(各顧客の履歴を形成する)が存在します。すべてのケースでlikelihood
フィールドを1に設定して、新しいレコードを作成せずに、各顧客の最新レコードを更新したいとします。MySQLの特定のレコードを選択した後の更新
UPDATE customer SET likelihood = 1 WHERE customer.ref IN (SELECT MAX(ref) FROM customer GROUP BY ID)
が、私は次のエラーを取得する:
"#1093 - You can't specify target table 'customer' for update in FROM clause"
私が間違っているつもりです
は、私はこのようなクエリが仕事をするだろうと思いましたか?編集: いくつかのサンプルデータ(ない完全なテーブル)
ref | ID | likelihood | name
----+----+------------+-----
1 | 1 | 0 | a
2 | 2 | 0 | b
3 | 1 | 0 | a
4 | 2 | 0 | b
5 | 1 | 0 | a
6 | 1 | 0 | a
だから私は選ぶたい:
4 | 2 | 0 | b
6 | 1 | 0 | a
とそれらを変更します。
4 | 2 | 1 | b
6 | 1 | 1 | a
いくつかのサンプルデータを投稿することができます... – Teja
は正確に貼り付けたエラーですか?クエリがテーブル 'customer'にあるとき、エラーはテーブル 'clients'を参照しています。 – kclair
@kclairの正しいメッセージ、間違ったテーブル - 編集、ありがとう – user114671