做地址管理时,需要先根据要设为默认的地址的用户将用户的其他地址都设置为非默认

需要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中才有这个错误

最新文章

  1. Eclipse EE 发布项目导致 Tomcate 的配置文件 server.xml 还原
  2. 绕过杀毒软件抓取windows密码
  3. logstash date插件
  4. 转发——推荐一些国外高质量Java开发者的博客
  5. Truncate Table user
  6. 链表list容器中通过splice合并链表与merge的不同,及需要注意的问题
  7. iOS pragma mark要使用
  8. Hibernate使用注解进行ORM映射实例
  9. ESL翻译:Linear Methods for Regression
  10. LeetCode--11_Container_With_Most_Water
  11. RoR - MetaProgramming
  12. SpringMVC redirect中文乱码问题
  13. 【RabbitMQ】6、rabbitmq生产者的消息确认
  14. int**a = new int[5][6] 怎么delete
  15. 微信小程序 windos server 2008 iis 7 tls1.0 升级 tls1.2
  16. 测试那些事儿—浅谈TCP/IP协议
  17. 使用WebView出现web page not available
  18. Swoole学习(二)Swoole之TCP服务器的创建
  19. 【手记】如果Idx/Sub字幕导不进MKVToolNix,看看是否这个原因
  20. shell检查网络出现异常、僵尸进程、内存过低后,自动重启

热门文章

  1. requirejs 第一个实例
  2. Android无线测试之—UiAutomator UiDevice API介绍一
  3. 项目中lua(基础)
  4. [Sdoi2011]火星移民
  5. [转]C#静态方法与非静态方法的比较
  6. java 对list 排序
  7. websocket Session 不支持序列化
  8. crontab 问题分析 - CSDN博客 https://blog.csdn.net/tengdazhang770960436/article/details/50997297
  9. centos部署jenkins服务
  10. ExtJS4 给同一个formpanel不同的url