MySQL实现同时查询更新同一张表的实例分析


本文摘自PHP中文网,作者黄舟,侵删。

这篇文章主要介绍了MySQL数据库同时查询更新同一张表的方法,需要的朋友可以参考下

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

这里写图片描述

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

1

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出来的结果当成一个临时的中间表,从中间表中获取想要的更新相关的数据。于是,上面的更新语句可以更改成下面这样子:

1

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监控脚本命令

mysql中的注意事项具体分析

mysql开启慢查询日志的方法详解

mysql连接不到本地数据库怎么办

mysql连接控制插件介绍

mysql如何实现行转列

讲解有关sqlserver分页查询处理方法

mysql用户和权限及破解root口令的方法示例

后盾网mysql数据库视频教程资源推荐

我所理解的mysql之四:事务、隔离级别及mvcc

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...