SQL一条语句更新两个表!
发布网友
发布时间:2022-05-26 17:31
我来回答
共5个回答
热心网友
时间:2023-10-08 18:30
首先注意Statement 和PreparedStatement的问题
Statement sm = cn.createStatement(); sm.addBatch(sql1); sm.addBatch(sql2); ... sm.executeBatch()用Statement的好处就是每次可以直接传一个SQL语句进去,不用管那么多。可是在数据量比较大的时候,应该会对效率有影响。不建议使用。
PreparedStatement ps = cn.preparedStatement(sql); { ps.setXXX(1,xxx); ... ps.addBatch(); } ps.executeBatch();PreparedStatement是会预编译的,只要一条SQL,不断动态设值,然后addBatch(),在数据量大的时候比较好,非常建议使用。
还有就是JDBC的驱动问题,很多同志可能还是在用2000的驱动呢,没有用批量更新的程序没有多大问题,可是一旦用了批量更新,出现很多问题,
反正数据库很卡,慢。还可以更新不了哦。
我强烈建议大家更新JDBC驱动。
但是如果出现
SQLServerException: sp_cursoropen/sp_cursorprepare: 该语句参数只能是一个批或带有单个 SELECT 语句的存储过程,且不带 FOR BROWSE、COMPUTE BY 或变量赋值。
应该就是JDBC的版本问题,1.0的驱动有这个问题,好像不支持批量更新,我建议大家使用1.2
我测试过了,完全没有问题!
提供一些数据连接参数
jdbc.driverClassName:com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url:jdbc:sqlserver://127.0.0.1:1444;databaseName=fax;selectMethod=cursor;
参考资料:http://www.jacken.com.cn/Database/MSSQL/
热心网友
时间:2023-10-08 18:30
可以明确的告诉楼主
一条sql语句不能更新两个表。
如果写update t1,t2 set t1.id=1,t2.id=1会出现语法错误
而你要更新的字段“申请状态”恰好在两个表里都有
因此只能是两条。
update a set 申请状态=2 from b where a.申请单号=b.申请单号 and b.申请身份证号=1
update b set 申请状态=2 where 申请身份证号=1
热心网友
时间:2023-10-08 18:31
需要两条sql语句
update b
set b.申请状态=2
where b.申请身份证号=1;
update a
set a.申请状态=2
where a.申请单号=(select b.申请单号 from b where b.申请身份证号=1)
热心网友
时间:2023-10-08 18:31
update (select * from FROM 表A t, 表B s WHERE t.申请单号 = s.申请单号) a set a.申请状态 = 2 where a.身份证号=‘1’
这样你试试吧,不过你这两张表存在冗余,因而加大了难度。其实一个表中可以完全不要申请状态
热心网友
时间:2023-10-08 18:32
update a set 申请状态=2 where 申请状态 in (select 申请状态 from b where 申请身份证号=1);
SQL一条语句更新两个表!
首先注意Statement 和PreparedStatement的问题 Statement sm = cn.createStatement(); sm.addBatch(sql1); sm.addBatch(sql2); ... sm.executeBatch()用Statement的好处就是每次可以直接传一个SQL语句进去,不用管那么多。可是在数据量比较大的时候,应该会对效率有影响。不建议使用。PreparedStatement ps...
干货| 一条 SQL 语句更新多个表
多表UPDATE语句是SQL中一种有效方法,允许在多个表中更新数据,使用一条语句达到目的。此技术通过组合两个或多个表的关键字,如JOIN关键字,实现数据更新。然而,并非所有情况都适合使用此方法,需注意限制和准则。例如,操作两个表的更新合并为一条语句,可提高效率,减少对服务器的调用。此过程包括定义...
一条sql语句怎么修改两个表里的相同字段的值
用存储过程,或者是用各个数据库的直接执行字符串SQL语句的方法吧
可不可以用一条SQL语句同时修改两个表的数据
绝对不做不到,修改两个表的数据,需要两个Update语句。
如何用一条sql语句修改两张表中相同字段
一个语句只能更新一个表你可以先建立个视图,视图是两个表的同名字段union all后的结果。然后用一条SQL语句修改该视图就行了。再或者 你先更新一个表 然后再用这个表去更新另一个表如:UPDATE A SET A.Field=B.Field FROM B WHRE A.ID=B.ID ...
求1条更新SQL关联两表间的更新语句
update sc_floutdtl a, sc_floutjfdtl b set b.QTY = a.QTY where a.orderno = b.code and a.sku = b.sku 应该是可以的吧!
如何一条sql语句修改两条记录
很多的复合的SQL语句,其实是多条语句的合成。比如:if(1=1) beginupdate 表1 set 字段1=1 where 字段1 is null;update 表2 set 字段2=1 where 字段2 is null;end 这就是一个条件判断句语。成立的话,就更新两个表的数据。但在语法上,它算一条SQL语句。
在oracle中怎样用一条sql语句更新两张有主外键关系的表的记录
作者表 A (ID,NAME,AGE,SEX)其中ID为主键,文章表B(ID,AID,ARTICLE)其中ID为主键,AID为外键。如果你希望更新表A中某个作者的ID,并同时更新文章表B中对应的数据,那么写一个触发器:create or replace trigger "A"after update of ID on A_author for each row begin if (:new.ID<>:...
sqlserver中如何用一条sql语句实现更新两张表,两张表是有主外键关系的...
更新外键表先在更新主键表 如果有规则可以做触发器。。。
如何通过一条SQL变更多个分库分表?
在数据库实施分库分表的架构下,数据变更确实成为了一个挑战,特别是当数据分散在多个数据库实例中时,传统的单个DDL语句无法直接应用于所有分库分表。不过,借助像NineData这样的专业数据库管理工具,我们可以有效地通过一条SQL语句来批量变更多个分库分表。以下是具体的解决方案步骤:一、录入数据源首先,...