我必須更新MySQL數據庫中的表中的多個行,其中查找要更新的行的條件位於同一個表中。如何在FROM子句中的MySQL中的UPDATE查詢中使用子查詢
例如,我有一個名爲「cdrs」的表。表中有一列叫做「tf」,這是我必須更新的那一列。 具有更新或不更新行的條件是「calltype」。 「recordId」是該表的關鍵。 我使用的查詢,這是一個:
UPDATE cdrs
SET tf = 1
WHERE recordId in (SELECT recordId from cdrs WHERE calltype = 11);
但與此查詢,我得到以下錯誤:
Error Code: 1093. You can't specify target table 'cdrs' for update in FROM clause.
我搜索這裏,說實話,發現很多帖子在這個問題上但是當所有表都在SET子句中時,它們都處理這個問題,而不是WHERE。 例如,我發現這個職位: MySQL Error 1093 - Can't specify target table for update in FROM clause
我試圖用這個想法,但沒有成功。
有沒有人有同樣的問題,並找到了解決辦法? 我很感謝解決這個問題的任何幫助。
非常感謝你, 若昂·保羅
是不是很簡單了很多做'UPDATE的CDR SET TF = 1,其中CALLTYPE = 11'? – apokryfos
嗨@apokryfos, 是的,這是真的!我堅持這個想法,即必須使用主鍵進行更新,但使用calltype,從邏輯上講是合理的。 非常感謝! –