在我的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 2012-03-13 17:37:23
是你粘貼的錯誤是否準確?當查詢位於「客戶」表上時,錯誤引用表'客戶'。 – kclair 2012-03-13 17:41:02
@kclair正確的消息,錯誤的表 - 編輯,謝謝 – user114671 2012-03-13 17:44:59