主頁 > 知識庫 > mysql中錯誤:1093-You can’t specify target table for update in FROM clause的解決方法

mysql中錯誤:1093-You can’t specify target table for update in FROM clause的解決方法

熱門標(biāo)簽:手機(jī)外呼系統(tǒng)違法嗎 南通電銷外呼系統(tǒng)哪家強(qiáng) 桂林云電銷機(jī)器人收費 清遠(yuǎn)申請400電話 如何選擇優(yōu)質(zhì)的外呼系統(tǒng) 東莞外呼企業(yè)管理系統(tǒng) 谷歌地圖標(biāo)注位置圖解 地圖簡圖標(biāo)注 沈陽智能外呼系統(tǒng)供應(yīng)商

發(fā)現(xiàn)問題

最近在處理一些數(shù)據(jù)庫中數(shù)據(jù)的時候,寫了下面的這一條sql語句:

UPDATE f_student
SET school_id = 0
WHERE
 id > (
 SELECT
 id
 FROM
 f_student
 WHERE
 school_id = M
 LIMIT 1
 )
AND id  (
 (
 SELECT
 id
 FROM
 f_student
 WHERE
 school_id = M
 LIMIT 1
 ) + N
)

上面的sql是想將某個區(qū)間的數(shù)據(jù)進(jìn)行修改,但是放到測試環(huán)境下一跑,報下面的錯誤:

[Err] 1093 – You can't specify target table ‘f_student' for update in FROM clause

意思很顯而易見了,說不能對進(jìn)行查詢操作的表進(jìn)行update操作,也就說我們的where條件中進(jìn)行了子查詢,并且子查詢也是針對需要進(jìn)行update操作的表的,mysql不支持這種查詢修改的方式。

解決方法

上網(wǎng)查了一下,針對這種問題可以通過”繞”的方式進(jìn)行實現(xiàn),下面看sql語句。

UPDATE f_student SET school_id = 0 WHERE
                     id > 
                     (
                     SELECT id FROM ( 
                         SELECT id FROM f_student WHERE school_id = M LIMIT 1 
                       ) AS temp 
                     )
                     AND id 
                    (
                     (
                      SELECT id FROM ( 
                              SELECT id FROM f_student WHERE school_id = M LIMIT 1 
                             ) AS temp_1 
                     ) + N
                    )

ok,完全沒有問題。上面的sql相比于之前的sql只是在取id的時候繞了一下,通過一個子查詢的方式獲取到id,而不是直接進(jìn)行獲取。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • MySQL UPDATE更新語句精解
  • Mysql聯(lián)表update數(shù)據(jù)的示例詳解
  • 實例驗證MySQL|update字段為相同的值是否會記錄binlog
  • mysql update語句的執(zhí)行過程詳解
  • MySQL select、insert、update批量操作語句代碼實例
  • Mysql update多表聯(lián)合更新的方法小結(jié)
  • MySQL執(zhí)行update語句和原數(shù)據(jù)相同會再次執(zhí)行嗎
  • mysql事務(wù)select for update及數(shù)據(jù)的一致性處理講解
  • Mysql Update批量更新的幾種方式
  • MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境的使用詳解
  • MYSQL updatexml()函數(shù)報錯注入解析
  • mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)
  • 記一次MySQL更新語句update的踩坑

標(biāo)簽:湖州 常德 貴州 內(nèi)蒙古 重慶 臨沂 天津 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql中錯誤:1093-You can’t specify target table for update in FROM clause的解決方法》,本文關(guān)鍵詞  mysql,中,錯誤,1093-You,can,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql中錯誤:1093-You can’t specify target table for update in FROM clause的解決方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql中錯誤:1093-You can’t specify target table for update in FROM clause的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章