关于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

-----------------------------------------------------------------------------------

offer突击训练营简介:

1:针对不知道怎么面试,面试没有信心的小伙伴,我们会给你一个offer保障。

2:我们会监督你15-20天内把面试体系技术点掌握至少7成,这样足够你去找到满意的工作了。

3:我们是面向面试学习指导,不会带你们去写代码,会把项目真实开发的迭代过程和技术细节如何实现业务功能都详细教清楚,你能在面试中流畅表达清楚就行了,项目经验你不用担心(技术老师提供的真实项目经验肯定拿的出手),自己学和别人带着系统学,效率完全不一样。

详情请点击这里 :offer突击训练营,给你一个offer的保障,求职跳槽的看过来!

相关推荐
迅猛龙办公室7 分钟前
python实现简单进度条
java·前端·python
斯内普吖13 分钟前
(开源)宠物饲养系统实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源·宠物
知守观17 分钟前
Spring Boot 2.1 → 3.5 迁移推演:这个 2018 年的项目会炸在哪
java·spring boot
传奇开心果编程18 分钟前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
Flynt19 分钟前
800KB 的 JSON 吃掉 8.5 秒 CPU:jackson 这波修复里,最容易被漏掉的洞藏在字符串里
java·安全
后端LV20 分钟前
Caffeine 快到 1450 万 ops/s,为什么我还是不敢说数据一致
java·后端
ao-weilai25 分钟前
MySQL数据库:表约束
数据库·mysql·adb
蜗牛互联网26 分钟前
Java 17调用Embeddings API:余弦相似度与FAQ拒答阈值
java·开发语言·人工智能
ly768942 分钟前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
kaixin_learn_qt_ing1 小时前
qgeoview-samples-basic
数据库