MySQL数据库同时查询更新同一张表
来源:互联网 发布:数据集市 知乎 编辑:程序博客网 时间:2024/05/10 07:17
在平常的项目中,经常会碰到这样的问题:我需要在一张标中同时更新和查询出来的数据。
例如:有如下图一张表数据,现在需要更新操作为:把status=1的name值更新为id=2的name值
通常情况下我们会想到如下语句来实现这个需求:
UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1
结果却报错,报错信息为:You can't specify target table 'tb_test' for update in FROM clause
,不能在同一语句中update,select同一张表。
不能在同一张表操作,换个思路,如果不是同一张表的话应该就是可以的。于是,可以把select出来的结果当成一个临时的中间表,从中间表中获取想要的更新相关的数据。
于是,上面的更新语句可以更改成下面这样子:
UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1
这样就可以完成题目中的操作。经历的大致过程为:
- 查询出id=2的数据作为中间表t;
- set的数据从t表中查询出来;
- 做更新操作
这样就不是在同一语句中update,select同一张表了,因为这相当与在操作两张表,tb_test和中间表t。最后的结果如下图:
阅读全文
0 0
- MySQL数据库同时查询更新同一张表
- mysql对同一张表进行查询和赋值更新
- MySQL SELECT同时UPDATE同一张表
- MySQL SELECT同时UPDATE同一张表
- mysql select 同时update 同一张表
- mysql 同一张表查询 left join
- 查询同一张表和更新同一张表的时候
- MySQL查询--使用LEFT JOIN解决同一张表查询
- Mysql删除同一张表的子查询语句
- mysql同一张表的字段更新到另一张表的字段
- Mysql update语句赋值嵌套select,更新和查询同一张表,必须取别名;用例:更新指定游戏服务器最后启动记录的结束时间
- mysql查询数据库有多少张表
- merge更新或插入同一张表
- oracle触发器中对同一张表进行更新再查询时,需加自制事务
- ORACLE 触发器对同一张表进行更新再查询时,需加自制事务
- 查询结果集直接更新到同一张表中的某个字段
- 同一张表的交集查询
- 【数据库SQL】数据库级联查询,同一张表,统计父级数量
- 长连接与短连接的区别以及使用场景
- HDU 6059 Kanade's trio (字典树, 2017 Multi-Univ Training Contest 3)
- 网页特殊符号HTML代码大全
- 人工智能
- 无刷电机学习笔记
- MySQL数据库同时查询更新同一张表
- 全面认识ES6(一)
- jni教程(AndroidStudio)
- 台湾新唐MCU
- 并查集详解
- iOS AppStory审核失败总结
- 竞态与死锁的理解
- C语言注释风格
- Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释