MySQL将select结果执行update的实例教程

一、单表查询—>更新

UPDATE table_name
SET field1=new-value1, field2=new-value2
[WHERE Clause]

二、多表联合查询—>更新

UPDATE a
INNER JOIN (SELECT yy FROM b) c ON a.id = c.id
SET a.xx = c.yy
[WHERE Clause]
  • 上面的 INNER JOIN ,可以换为 LEFT JOIN 、 RIGHT JOIN 等联合查询。
  • SET 后的字段必须为 a 表中的字段,该字段可以等于某个常量,可以等于某一列。若不是 a 表中的字段,则会报 The target table b of the UPDATE is not updatable 的信息。
  • WHERE 子句必须放在 SET 后面
  • UPDATE 后的 a 表不是查询的结果,也不能是 SELECT 子句

例子:

tableex_copy1表

tablein_copy1表

查询SQL

SELECT * FROM
tableex_copy1 a LEFT JOIN
(SELECT * FROM tablein_copy1) b
ON a.BID = b.AID
WHERE b.ASEX = '女'

update SQL

UPDATE
#SELECT * FROM
tableex_copy1 a LEFT JOIN
(SELECT * FROM tablein_copy1) b
ON a.BID = b.AID
SET a.CESHI = '6666'
WHERE b.ASEX = '女'

更新之后的tableex_copy1表

总结

到此这篇关于MySQL将select结果执行update的文章就介绍到这了,更多相关MySQL将select结果执行update内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL select、insert、update批量操作语句代码实例

    项目中经常的需要使用批量操作语句对数据进行操作,使用批量语句的时候需要注意MySQL数据库的条件限制,这里主要是数据的大小限制,这里对批量插入.批量查找及批量更新的基础操作进行下简单的汇总. 1.批量insert插入语句,如下的语句在测试环境尝试过1W+的批量插入,具体数量跟表结构及字段内容有关系. <insert id="addTextPushList"paramerterType = "java.util.List"> INSERT INTO SYS

  • Mysql 数据库死锁过程分析(select for update)

    近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据. 我们Mysql的存储引擎是innodb,支持行锁.解决同时拿数据的方法有很多,为了更加简单,不增加其他表和服务的情况下,我们考虑采用select... for update的方式,这样X锁锁住查询的数据段,表里其他数据没有锁,其他业务逻辑还是可以操作. 这样一台服务器比如select .. for upda

  • MySQL SELECT同时UPDATE同一张表问题发生及解决

    MySQL不允许SELECT FROM后面指向用作UPDATE的表,有时候让人纠结.当然,有比创建无休止的临时表更好的办法.本文解释如何UPDATE一张表,同时在查询子句中使用SELECT. 问题描述 假设我要UPDATE的表跟查询子句是同一张表,这样做有许多种原因,例如用统计数据更新表的字段(此时需要用group子句返回统计值),从某一条记录的字段update另一条记录,而不必使用非标准的语句,等等.举个例子: 复制代码 代码如下: create table apples(variety ch

  • mysql SELECT FOR UPDATE语句使用示例

    以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行.而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同

  • MySQL中Update、select联用操作单表、多表,及视图与临时表的区别

    一.MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin.SQL语言中不要显示的出现select关键字 update data d,chanpin c set d.zhulei=c.zhulei,d.xiaolei=c.xiaolei,d.fenxiang=c.fenxiang,d.zhuanye=c.zhuanye,d.jiliang=c.jiliang,d.gs=c.zgs,d.xzgs=c.zgs,d.

  • mysql事务select for update及数据的一致性处理讲解

    MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果我们把autocommit关闭掉[autocommit = 0],通过程序来控制,只要一次commit就可以了,这样也才能更好的体现事务的特点! 对于需要操作数值,比如金额,个数等等! 记住一个原则:一锁二判三更新 在MySQL的InnoDB中,预设的Tansaction isolation lev

  • MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

    问题背景: 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下:   当一个会员想续买会员(只能续买1个月.3个月或6个月)时,必须满足以下业务要求: •如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数 •如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数 •续买后active_status必须为1(即被激活) 问题分析: 对于上面这种情况,我们一般会先SELECT查出这条记录,然后根

  • MySQL将select结果执行update的实例教程

    一.单表查询->更新 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 二.多表联合查询->更新 UPDATE a INNER JOIN (SELECT yy FROM b) c ON a.id = c.id SET a.xx = c.yy [WHERE Clause] 上面的 INNER JOIN ,可以换为 LEFT JOIN . RIGHT JOIN 等联合查询. SET 后的字段必须为 a

  • MySQL查看与修改字符集的方法实例教程

    一.查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%'; 方法二:show variables like 'collation%'; mysql> show variables like '%character%'; +--------------------------+--------------------------------------+ | Variable_name | Value | +-----

  • MySQL按指定字符合并以及拆分实例教程

    前言 按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符).本文将举例演示如何进行按照指定字符合并及拆分. 1. 合并 MySQL数据库中按照指定字符合并可以直接用group_concat来实现. 创建测试表 mysql> create table tb_group(id int auto_increment primary key ,col1 varchar(20)); Query OK, 0 rows aff

  • MySQL中UPDATE语句使用的实例教程

    一.UPDATE常见用法 首先建立测试环境: DROP TABLE IF EXISTS t_test; CREATE TABLE t_test ( bs bigint(20) NOT NULL auto_increment, username varchar(20) NOT NULL, password varchar(20) default NULL, remark varchar(200) default NULL, PRIMARY KEY (bs) ) ENGINE=InnoDB AUTO

  • MySQL执行update语句和原数据相同会再次执行吗

    背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 测试环境 MySQL5.7.25 Centos 7.4 binlog_format为ROW 参数 root@localhost : (none) 04:53:15> show variables like 'binlog_row_image'; +------------------+-------+ | Variable_name | Value | +------

  • MySQL数据库执行Update卡死问题的解决方法

    目录 问题分析 解决办法 过程复现和解决 扩展 总结 执行数据库更新update操作的时候数据库卡死了 问题分析 一般都是数据库事务未提交,导致update或者delete卡死. 解决办法 在执行完更新或删除后,记得将事务提交commit; 找到数据库客户端,执行commit操作. 如果还不行. 那么应该是数据库在执行数据操作失败 or 事务未提交 之后,将需要执行的sql语句锁死了. 过程复现和解决 通过如下命令查看数据库的自动提交状态 show variables like 'autocom

  • mysql命令行脚本执行操作示例

    本文实例讲述了mysql命令行脚本执行操作.分享给大家供大家参考,具体如下: 命令行连接 在工作中主要使用命令操作方式,要求熟练编写 打开终端,运行命令 mysql -uroot -p 回车后输入密码,当前设置的密码为mysql 连接成功后如下图 退出登录 quit 和 exit 或 ctrl+d 登录成功后,输入如下命令查看效果 查看版本:select version(); 显示当前时间:select now(); 修改输入提示符 prompt python> 1 \D 完整日期 \U 使用用

  • MySQL之select in 子查询优化的实现

    下面的演示基于MySQL5.7.27版本 一.关于MySQL子查询的优化策略介绍: 子查询优化策略 对于不同类型的子查询,优化器会选择不同的策略. 1. 对于 IN.=ANY 子查询,优化器有如下策略选择: semijoin Materialization exists 2. 对于 NOT IN.<>ALL 子查询,优化器有如下策略选择: Materialization exists 3. 对于 derived 派生表,优化器有如下策略选择: derived_merge,将派生表合并到外部查询

  • MySQL事务与锁实例教程详解

    目录 MySQL事务和锁 事务 事务的控制语句 事务隔离级别设置 脏读 不可重复读 幻读 锁机制 InnoDB的行级锁 锁实战 死锁 总结 MySQL事务和锁 事务 说到关系型的数据库的事务,相信大家对四大特性都不陌生,分别是原子性.一致性.隔离性.持久性,简称为ACID特性. MySQL中支持3种不同的存储引擎: MyISAM存储引擎.Memory存储引擎.和InnoDB存储引擎 注:只有InnoDB才支持事务. 事务的控制语句 控制语句 作用 begin或者start transaction

  • MySQL InnoDB锁类型及锁原理实例解析

    目录 锁 共享锁 排他锁 意向锁 记录锁 间隙锁 临键锁 死锁 死锁产生条件 行锁发生死锁 表锁发生死锁 锁的释放 事务阻塞 死锁的避免 锁的日志 行锁的原理 不带任何索引的表 带主键索引的表 带唯一索引的表 结论 1.表必定有索引 2.唯一索引数据行加锁,主键索引同样被锁 锁 锁是用来解决事务对数据的并发访问的问题的.MyISAM支持表锁,InnoDB同时支持表锁和行锁. 表加锁语法: lock tables xxx read; lock tables xxx write; unlock ta

随机推荐