2015-11-04 187 views
0

以下是我的查詢相同的子查詢更新表,我試圖更新recods,但我得到一個錯誤:mysql如何在where子句

你不能指定目標表的更新,從條款

UPDATE user_payment_info 
SET 
    ammount='110', 
    status='failed', 
    transaction_id='0' 
WHERE 
    id=(SELECT id 
     FROM user_payment_info 
     WHERE cust_id='771' 
     ORDER BY id DESC 
     LIMIT 1) 

如何與來自同一個表

越來越ID更新記錄我怎樣才能解決這些MySQL錯誤

you can't specify target table for update in from clause

可以有些身體幫助我做到這些。

+0

不要使用'秩序by'子查詢 – Saty

+0

@Saty我也嘗試刪除順序,但我不會工作 –

回答

1

試試這個:

UPDATE user_payment_info AS t1 
INNER JOIN 
(
     SELECT MAX(id) AS MaxId 
     FROM user_payment_info 
     WHERE cust_id='771' 
) AS t2 ON t1.id = t2.MaxId 
SET t1.ammount='110', 
    t1.status='failed', 
    t1.transaction_id='0'; 
+0

謝謝你的回答它爲我工作 –

1

您不必使用子查詢,你可以使用與爲了一個UPDATE查詢和LIMIT 1:

UPDATE 
    user_payment_info 
SET 
    ammount='110', 
    status='failed', 
    transaction_id='0' 
WHERE 
    cust_id='771' 
ORDER BY 
    id DESC 
LIMIT 1