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

avatar 2021年11月10日16:47:17 0 53 views

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
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

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

  

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