mysql 中將表中某一字段值查詢出來,更新到另一個字段上的SQL寫法

場景:想要將receiveTime的值賦給create_time,此時涉及到同表“自更新”的操作

image.png
  1. 錯誤示例
update order_info set create_time = (select receiveTime from order_info where flowId = 1) where flowId = 1;

這種寫法會報一個錯誤:You can't specify target table for update in FROM clause
含義:不能在同一表中查詢的數(shù)據(jù)作為同一表的更新數(shù)據(jù)。

  1. 解決的方法
    借助一個虛擬的中間表,將receiveTime賦值給create_time
UPDATE order_flow SET create_time =
    (SELECT b.receiveTime FROM 
          ( SELECT a.receiveTime FROM order_flow a WHERE a.flowId = 1) -- 此處相當(dāng)于一個虛擬的表,簡稱b
b) 
WHERE flowId = 1;

利用嵌套兩層select語句的方式實現(xiàn)了將receiveTime的值賦給create_time,此時涉及到同表“自更新”的操作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容