MySQL报错You can‘t specify target table ‘test‘ for update in FROM clause的解决方法

一、遇到的问题

MySQL报错You can't specify target table 'test' for update in FROM clause

二、解决

1、报错sql

报错的意思是在同一sql语句中,通过子查询在同一个表中查询的数据,不能作为更新这个表的where条件。

UPDATE 
  `test` 
SET
  test_status = 0 
WHERE test_user_id IN 
  (SELECT 
    test_user_id 
  FROM
    test 
  WHERE test_user_ctime = '') ;

2、使用如下sql,即可解决

  
UPDATE 
  `test` 
SET
  test_status = 0 
WHERE test_user_id IN 
  (SELECT 
    test_user_id 
  FROM
    (SELECT 
      test_user_id 
    FROM
      test 
    WHERE test_user_ctime = '') AS temp) ;

将查询的表select as指定表别名,从别名表中查询数据作为更新这个表的where条件,即可解决同一个表操作报错的问题。

同理,删除操作,也会报同样的错误哦

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值