MySQL数据库同时查询更新同一张表的方法

作者:mdxy-dxy 时间:2024-01-22 23:10:38 

在平常的项目中,经常会碰到这样的问题:我需要在一张标中同时更新和查询出来的数据。例如:有如下图一张表数据,现在需要更新操作为:把status=1的name值更新为id=2的name值

MySQL数据库同时查询更新同一张表的方法

通常情况下我们会想到如下语句来实现这个需求:

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。最后的结果如下图:

MySQL数据库同时查询更新同一张表的方法

来源: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
  • asp之家 网络编程 m.aspxhome.com