You can't specify target table 't' for update in FROM clause SQL异常解决

avatar 2021年11月10日16:47:17 6 1538 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此

MySQL不允许更新一张表时又查询这张表,如下SQL会报错

UPDATE oms_order t SET LINK_ORDER_CODE = (SELECT ORDER_CODE FROM oms_order WHERE ID = t.LINK_ORDER_ID limit 1)

> 1093 - You can't specify target table 't' for update in FROM clause

> 时间: 0s

 

我上面订单表有一个关联订单id和关联订单编码,我想给关联订单编码统一设置值,结果报错

解决办法很简单加一个子查询

改成这样就行

UPDATE oms_order t SET LINK_ORDER_CODE = (SELECT ORDER_CODE FROM (select * from oms_order) t2  WHERE ID = t.LINK_ORDER_ID limit 1);

把另一个 oms_order 改成子查询 (select * from oms_order) t2

  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0