sql 同时(更新)update和(查询)select同一张表
当要使用本表的数据更新本表时,容易出错:
如下:
update b
set aaa=select max(MAX_def_60M) as max from b
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select max(MAX_def_60M) as max from b' at line 2
解决办法:再嵌套一层查询
update b
set aaa=
(select max
from
(select max(MAX_def_60M) as max from b) as temp
)
不能同时读写的原因:mysql读写锁锁定的问题
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
写锁:
若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
加了共享锁的对象,可以继续加共享锁,不能再加排它锁。加了排它锁后,不能再加任何锁。
那么说我在更新一个表的时候,我锁定了一行,这一行我是不能加读锁的了,所以这时我查询这张表,就会出现这种问题。
加一层子查询之后成功的原因(待补充):
mysql在from子句中遇到子查询时,先执行子查询并将结果放到一个临时表中,我们通常称它为“派生表”;临时表是没有索引、无法加锁的。
sql 同时(更新)update和(查询)select同一张表相关推荐
- 几种更新(Update语句)查询的方法
正 文: 数据库更新就一种方法Update, 其标准格式:Update 表名 set 字段=值 where 条件 不过根据数据的来源不同,还是有所区别的: 1.从外部输入 这种比较简单 例:upd ...
- 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
对 3.2 数据查询-SELECT(单表查询.连接查询.嵌套查询.集合查询.多表查询)的转载与学习笔记: 0.前言 本篇文章是对<数据库系统概论>王珊老师主编的数据库查询SELECT部分做 ...
- mysql教程详解之多表联合查询,MYSQL教程mysql多表联合查询返回一张表的内容实现代码...
搜索热词 <MysqL教程MysqL多表联合查询返回一张表的内容实现代码>要点: 本文介绍了MysqL教程MysqL多表联合查询返回一张表的内容实现代码,希望对您有用.如果有疑问,可以联系 ...
- mysql 不在另一张表_mysql查询在一张表不在另外一张表的记录
mysql查询在一张表不在另外一张表的记录 问题: 查询一个表(tb1)的字段记录不在另一个表(tb2)中 条件:tb1的字段key的值不在tbl2表中 ---------------------- ...
- sql批量更新update嵌套select更新
概述 有两张表[user]和[city],user表的 city_uuid.city_no 和 city 表的 city_uuid.city_no 一一对应,但是 user 表只有 city_uuid ...
- 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...
- mysql中3张表如何关联查询_mysql三张表关联查询
三张表,需要得到的数据是标红色部分的.sql如下: select a.uid,a.uname,a.upsw,a.urealname,a.utel,a.uremark, b.rid,b.rname,b. ...
- php sql 去除重复数据,MSSQL_快速删除重复记录,SQL Server如何实现?,如果一张表的数据达到上百万 - phpStudy...
如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间-- 开发人员的噩梦--删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地 ...
- oracle三张表关联外查询,oracle三张表左连接 | 学步园
三张表,要查询出结果是:第一张表全显示,其余两张表显示对应连接的信息 三张表分别是 SQL> select * from zr_stu; STUID STUNAME STUSEX ------- ...
最新文章
- 深入剖析iLBC的丢包补偿技术(PLC)
- Linux用户、群组管理
- MySQL自定义变量的使用
- [UWP]本地化入门
- vs如何写多线程_java中的多线程的示例
- 无语!Docker桌面不再对企业用户免费
- Java对象内存布局
- java 截取两个字符之间的字符串_java里面如何截取两个关键字中间的字符串?
- python函数 - 函数创建、属性、参数及偏函数
- LUOGU P4281 [AHOI2008]紧急集合 / 聚会 (lca)
- 数据结构与算法笔记——用Go语言描述
- 作死!研究生用实验室里的烧杯冲咖啡,喝完就进了医院抢救
- Activiti工作流表之间的关系
- dipg(dip歌词翻译中文)
- android root后手机文件管理器,手机root后用什么文件管理器
- 【绘画素材】日系插画“人物表情”素材参考!告别脸部僵硬~
- 拼小圈营销群_拼多多拼小圈引流卖货全攻略
- 程序设计基础课程设计——学生成绩管理程序
- Leslie--Chueng项目服务端、小程序的本地部署操作教程
- 分贝通携手衡石科技,用心护好客户「钱袋子」 增收节流数百万