0
点赞
收藏
分享

微信扫一扫

关于MySql update语句不能用子查询的解决办法


关于MySql update语句不能用子查询的解决办法

  • 使用MySql数据库语法操作update时,第一时间想到的是一下写法:

UPDATE purchase_request_detail SET convert_to_voucher_id=2, convert_to_voucher_type='inventory-voucher' 
WHERE detail_id IN (select detail_id from purchase_request_detail where request_id=1 and item_id=1)

  • 但是这个时候就会报错:
  • You can’t specify target table ‘xxx’ for update in FROM
  • MySql的update的一些特点:
  • update 时,更新的表不能在set和where中用于子查询;
  • update 时,可以对多个表进行更新(Sql Server不行);
  • 如:
  • update table_a A,table_b B set A.B_ID=B.ID ,B.A_ID=A.ID;
  • 所以MySql update是不允许使用子查询的,正确写法是:

UPDATE purchase_request_detail AS table_1 
INNER JOIN (select detail_id from purchase_request_detail where request_id=1 and item_id=1) 
AS table_2 SET convert_to_voucher_id=2, convert_to_voucher_type='inventory-voucher'  WHERE table_1.d

举报

相关推荐

0 条评论