MySQL数据库同时查询更新同一张表的方法
作者:mdxy-dxy 时间:2024-01-22 23:10:38
在平常的项目中,经常会碰到这样的问题:我需要在一张标中同时更新和查询出来的数据。例如:有如下图一张表数据,现在需要更新操作为:把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。最后的结果如下图:
来源:http://blog.csdn.net/younglao/article/details/76570187
标签:MySQL,查询,更新,同一张表
0
投稿
猜你喜欢
详解javascript常用工具类的封装
2024-05-11 09:36:38
Python中datetime常用时间处理方法
2022-05-03 16:07:06
Pandas中DataFrame交换列顺序的方法实现
2023-01-21 10:21:08
微信JSSDK调用微信扫一扫功能的方法
2024-04-29 13:46:02
Oracle动态交叉表生成
2010-07-27 12:55:00
Dreamweaver初学者常见问题解答
2007-02-03 11:39:00
python 文本单词提取和词频统计的实例
2022-10-25 04:53:03
如何使用FSO修改文件夹的名称
2008-10-11 14:24:00
ts封装axios最佳实践示例详解
2024-04-19 09:59:07
Python远程开发环境部署与调试过程图解
2023-06-07 08:10:40
Mootools 1.2教程(10)——Fx.Tween的使用
2008-12-02 18:03:00
Python numpy.interp的实例详解
2023-01-21 07:07:06
CSS 针对 Safari(WebKit)的 CSS 注意事项 3
2008-09-15 18:36:00
Python 生成一个从0到n个数字的列表4种方法小结
2023-06-10 19:14:59
利用Python生成文件md5校验值函数的方法
2023-09-29 14:51:40
GC与JS内存泄露
2010-09-25 19:01:00
Effective Python bytes 与 str 的区别
2021-07-11 16:52:13
mysql时间戳转成常用可读时间格式的两种方法
2024-01-18 09:38:24
Oracle 自增(auto increment) 或 标识字段的建立方法
2009-03-06 11:15:00
利用phpmyadmin设置mysql的权限方法
2023-11-24 02:12:46