Update Select批量更新

CREATE TABLE dualx(
       x_id VARCHAR(5) NOT NULL ,
       x_con VARCHAR(10)
)  

CREATE TABLE dualy(
       y_id VARCHAR(5) NOT NULL ,
       y_con VARCHAR(10)
)  

INSERT INTO dualx VALUES (‘1‘,‘xxx‘);
INSERT INTO dualx VALUES (‘2‘,‘xxx‘);
INSERT INTO dualx VALUES (‘3‘,‘xxx‘);  

INSERT INTO dualy VALUES (‘1‘,‘111‘);
INSERT INTO dualy VALUES (‘2‘,‘222‘);
INSERT INTO dualy VALUES (‘3‘,‘333‘);  

UPDATE dualx   SET (x_con) = (SELECT y.y_con  FROM  dualy y WHERE dualx.x_id = y.y_id)  

SELECT * FROM dualx;
SELECT * FROM dualy;
DROP TABLE dualx;
DROP TABLE dualy;  

UPDATE dualx SET (x_con) = (SELECT y.y_con FROM dualy y WHERE dualx.x_id = y.y_id) 其中SELECT y.y_con FROM dualy y WHERE dualx.x_id = y.y_id不能返回多行,否则报错。

时间: 2024-10-17 16:16:40

Update Select批量更新的相关文章

mybatis 批量更新

https://blog.csdn.net/xu1916659422/article/details/77971696 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMultiQueries=true <!-- 这次用resultmap接收输出结果 --> <selec

mybatis学习之路----批量更新数据两种方法效率对比

原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方式有两种, 一种用for循环通过循环传过来的参数集合,循环出N条sql, 另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现. 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql:

批量更新批量update

一:Oracle数据库 1:批量插入 <insert id="insertBatch" parameterType="Java.util.List" >    insert into RECIPEDETAIL (RDID, ROID, TYPE,       NAME, MEDIWEIGHT, MEDINUM,       MONEY, OPERATETIME, CHARGENUMBER,       REMARK, INSTRUCTION, AMOUN

update关联其他表批量更新数据

批量更新表时,update一个表的列时,需要依赖另外的表,这种依赖可以是where条件子句,也可以要update的field的值依赖另外的表 通常有两种做法   1.使用存储过程   2.在程序代码里逐条循环执行这里给出一种更高效.简洁的做法,批量更新SQL ,一句SQL就可以替代麻烦的循环过程,有MS SQLServer.Oracle.DB2下的写法--关键点:t4和t1是同一个table,primary key肯定也是同一个,--并以它进行关联,这样在 select语句里即可引用到要upda

oracle和mysql中update联表批量更新数据的区别

之前碰到一个sql语句,在oracle中可以运行,在mysql上就不行,后来查了好久,发现了他们两个联表批量更新数据的区别如下: (借鉴一下别人的例子) update :单表的更新不用说了,两者一样,主要说说多表的更新复制代码 代码如下: Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标 update ( select t.charger_id_ new_charger_id_ from t_cus_year_status t left

Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果

我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT--FOR UPDATE获得可更新结果.按照错误提示的信息我们可以采用两种解决办法: 解决办法1:在查询语句后面写上for update,如:select * from 表名 for update: 解决办法2:在查询的列中使用rowid属性,如:select rowID, 表名.* from 表名

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

这篇文章主要介绍了MySQL中SELECT+UPDATE处理并发更新问题解决方案分享,需要的朋友可以参考下. 问题背景 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下: 当一个会员想续买会员(只能续买1个月.3个月或6个月)时,必须满足以下业务要求: 如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数 如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数 续买后active_statu

ORACLE 关连更新 update select

总结:  关键的地方是where 语句的加入. 在11G中, 如果不加11G , 或造成除匹配的行数更新为相应的值之后, 其余的会变成负数. 所以, 测试的办法就是:  先查看需要更新的数量即连接的数量究竟有多少行, 然后update 之后多少行, 才能确定条件是否正确. 引入知识比较全面的地址: http://www.blogjava.net/Jhonney/archive/2010/06/25/324503.html.  文章最后注明转载. 本人用到的2处SQL: 1 : UPDATE SF

mybatis执行批量更新batch update 的方法

1.数据库连接必须配置:&allowMultiQueries=true 我的配置如下:jdbc:mysql://10.20.13.16:3306/CALENDAR?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 2.批量修改并加判断条件(修改字段可选) <!-- 批量更新赛程 --> <update id="updateMatchs" parameterType=&q