Mysql -- You can't specify target table 'address' for update in FROM clause
2024-09-08 06:43:23
做地址管理时,需要先根据要设为默认的地址的用户将用户的其他地址都设置为非默认
需要select出用户id然后update
原语句
update address set isdeafult = 0 where user_id = (select user_id from address where id = ?)
报错 -- You can't specify target table 'address' for update in FROM clause
大意是不能先select出同一表中的某些值,再update这个表(在同一语句中)
修改后的语句如下
UPDATE address a INNER JOIN (SELECT user_id FROM address WHERE id = #{id}) c SET a.isdeafult = 0 WHERE a.user_id = c.user_id
解析
select * from address a INNER JOIN
(SELECT user_id FROM address WHERE id = 1) c WHERE a.user_id = c.user_id
的内容完全等于 select * from address ,本质上就是用inner join做了个中间表查询
注 : 只有在mysql中才有这个错误
最新文章
- Eclipse EE 发布项目导致 Tomcate 的配置文件 server.xml 还原
- 绕过杀毒软件抓取windows密码
- logstash date插件
- 转发——推荐一些国外高质量Java开发者的博客
- Truncate Table user
- 链表list容器中通过splice合并链表与merge的不同,及需要注意的问题
- iOS pragma mark要使用
- Hibernate使用注解进行ORM映射实例
- ESL翻译:Linear Methods for Regression
- LeetCode--11_Container_With_Most_Water
- RoR - MetaProgramming
- SpringMVC redirect中文乱码问题
- 【RabbitMQ】6、rabbitmq生产者的消息确认
- int**a = new int[5][6] 怎么delete
- 微信小程序 windos server 2008 iis 7 tls1.0 升级 tls1.2
- 测试那些事儿—浅谈TCP/IP协议
- 使用WebView出现web page not available
- Swoole学习(二)Swoole之TCP服务器的创建
- 【手记】如果Idx/Sub字幕导不进MKVToolNix,看看是否这个原因
- shell检查网络出现异常、僵尸进程、内存过低后,自动重启
热门文章
- requirejs 第一个实例
- Android无线测试之—UiAutomator UiDevice API介绍一
- 项目中lua(基础)
- [Sdoi2011]火星移民
- [转]C#静态方法与非静态方法的比较
- java 对list 排序
- websocket Session 不支持序列化
- crontab 问题分析 - CSDN博客 https://blog.csdn.net/tengdazhang770960436/article/details/50997297
- centos部署jenkins服务
- ExtJS4 给同一个formpanel不同的url