2016-10-05 82 views
0

我子查詢的基礎上更新記錄,但它給我的錯誤錯誤更新記錄

你不能從第

我的查詢指定的目標表中更新是

UPDATE paymentinfo set customer_id = 
(
    SELECT transation.transactionid 
    FROM paymenttransaction AS transation 
    LEFT JOIN paymentinfo as payment 
    ON (transation.paymentinfoid=payment.paymentinfoid) 
    where payment.hash="0b576d33c57484692131471a847eab7c" 
) 
WHERE hash="0b576d33c57484692131471a847eab7c" 

我在哪裏錯了,這將是完美的解決方案,這個問題

+0

嘗試'更新paymentinfo設置paymentinfo.customer_id'它一次 – khalid

回答

1

我認爲這是最簡單的(在你的情況下),使用雙子查詢方法:

UPDATE paymentinfo 
    SET customer_id = (SELECT transactionid 
         FROM (SELECT t.transactionid 
          FROM paymenttransaction pt LEFT JOIN 
            paymentinfo pi 
            ON t.paymentinfoid = pi.paymentinfoid 
          WHERE p.hash = '0b576d33c57484692131471a847eab7c' 
          ) t 
        ) 
    WHERE hash = '0b576d33c57484692131471a847eab7c'; 

通常情況下,你想切換這些使用JOIN,但我認爲這是一個位在這種情況下複雜。

+0

我正在使用您的查詢,但它仍然給我錯誤 –

+0

當您引用字段時,表別名未正確使用。 – Shadow

1

您正在更新表'paymentinfo',同時您正在使用此表在子查詢中進行選擇。 請把這個查詢分成兩部分,它會工作。

+0

我將如何休息。你的意思是我使用兩個查詢而不是單個查詢? –