首页 > 数据库 >MySql数据库中,对于同一个表,如果直接把查询结果赋值给待更新字段,则会出现锁表的情况。

MySql数据库中,对于同一个表,如果直接把查询结果赋值给待更新字段,则会出现锁表的情况。

时间:2023-09-13 16:36:08浏览次数:39  
标签:锁表 数据库 查询 MySql SELECT 赋值

MySql数据库中,对于同一个表,如果直接把查询结果赋值给待更新字段,则会出现锁表的情况。

原因是:mysql在from子句中遇到子查询时,先执行子查询并将结果放到一个临时表中,我们通常称它为“派生表”;临时表是没有索引、无法加锁的。

update时,会锁表,此时不能再select。所以会报错,

此时如果将结果集放入临时表,临时表不会上锁,所以,可以正常查询并更新。

 

UPDATE user
SET age = ( SELECT age FROM ( SELECT * FROM user ) AS tb_temp WHERE name = '张三' )
WHERE
name = '赵六'

 

UPDATE t_newmanutrail
SET tContent = ( SELECT tContent FROM ( SELECT * FROM t_newmanutrail ) AS tb_temp where trailId = 'd6dae47c568a4e2b95029696d0d6ccb0' )
WHERE
trailId = 'f73b3a7e9f8e4ba09d599419cefaf1ad'

 

雍博科技

www.yongbosoft.com

标签:锁表,数据库,查询,MySql,SELECT,赋值
From: https://www.cnblogs.com/monjeo/p/17700016.html

相关文章

  • MySQL中EXPLAIN用法和结果分析
    可以查看:[MySQL高级](一)EXPLAIN用法和结果分析_mysqlexplain_王洪玉的博客-CSDN博客重点信息截图: ......
  • mysql中information_schema.columns字段说明
    语句如下:SELECT *FROM information_schema.COLUMNSWHERE TABLE_SCHEMA='具体某个数据库';各字段含义如下:字段含义table_schema 表所有者(对于schema的名称)table_name 表名column_name 列名ordinal_position 列标识号column_default 列的默认值is_nullable 列的为空性......
  • MySQL 字段根据逗号分割实现列转行
    表数据: 期望数据:实现sql:selecta.id,b.help_topic_id+1,a.execute_name,#substring_index(a.execute_name,',',b.help_topic_id+1),substring_index(substring_index(a.execute_name,',',b.help_topic_id+1),',',-1)from`user`aleft......
  • MySQL为什么改进LRU算法
    LRU算法概念介绍LRU(LeastRecentlyUsed,最近最少使用)算法是一种用于缓存管理的常见算法。它的核心思想是:当需要淘汰(替换)一个数据时,选择最长时间未被访问的数据进行淘汰,即选择最近最少使用的数据。以下是LRU算法的概念介绍和基本工作原理:缓存管理:LRU算法通常用于管理缓存中的数据。......
  • 完美解决MySQL ERROR:Access denied for user `root`@`localhost` (using password:YE
    windows找到mysql安装目录下的my.ini,并在最后一行添加skip-grant-tableslinux目录为etc/my.cnf在最后一行添加skip-grant-tables 1、输入mysql-uroot-p  然后回车2、输入usemysql; 3、输入updateusersetpassword=password("这里填写要设置的密码")whereuser=......
  • MySQL篇:bug1_navicat添加外键保存后不起作用(消失)
    问题在Nacicatpremium中添加外键一保存就消失用SQL语句也显示创建成功,没有报错,可是在INSERT中又起不到约束作用解决办法参考一下资料发现可能是表的类型不支持外键要在MySQL声明外键,用户应该紧记几个要点:两个表必须是InnoDB类型。在参考的表,必须有一个索引,参考的列被......
  • MySql教程____mysql架构体系
    ......
  • MySql教程(--)MySql安装-基于yum源安装mysql
    一.下载mysql的yum源 1.地址可根据自己需求下载 http://repo.mysql.com/wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm2.执行下载源 rpm-ivhmysql57-community-release-el7-8.noarch.rpm 3.安装yum-yinstallmysql-server 4.启动servicemysqld......
  • MySQL 分组取最新的一条
    1.MySQL分组取最新的一条2.MySQLnotinnotexists CREATETABLE`test_dept`(`deptid`int(11)NOTNULL,`deptname`varchar(255)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY(`deptid`)USINGBTREE)ENGINE=InnoDBCHARACTERSET......
  • MySQL 8.0安装 Windows
    方案概述本方案提供winserver下mysql两种安装方式:图像化安装:MySQLInstallerMSIZIPArchive压缩包(命令行)方式实施步骤1.图像化安装:MySQLInstallerMSI官方下载地址:https://dev.mysql.com/downloads/这里建议选择:community版本通过离线方式安装,web-community版本需要链接网络下载......