MYSQL 1093 - You can‘t specify target table ‘car‘ for update in FROM clause

需求:需要在根据条件查询出来的数据再进行对该表的状态值进行批量修改(先查询后修改)在一条SQL中完成

一、错误的SQL写法如下:

UPDATE car set status = 0 where car_id in (SELECT car_id FROM  car where color = 1)

执行以上SQL后 报错信息如下:

UPDATE car set status = 0 where car_id in (SELECT car_id FROM  car where color = 1)
1093 - You can't specify target table 'car' for update in FROM clause
时间: 0.001s

错误信息提示为: 不能在FROM子句中指定用于更新的目标表’car’

在这里插入图片描述

二、解决方法如下:

在子查询中再添加一个查询并取出别名,如下:
UPDATE car set status = 0 where car_id in (SELECT c.car_id FROM (SELECT * FROM car) c where c.color = 1);

执行效果

在这里插入图片描述

执行成功,解决问题,这是在个人工作中想到的问题,所以加以解决,在实际开发中查询根据需求条件的不同可以进行相应的修改变更,分享一下,共同学习进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值