起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2260|回复: 5

[处理中6] 同一表中同步更新不同ID记录问题

[复制链接]

34

主题

135

帖子

637

积分

高级会员

Rank: 4

积分
637
QQ
发表于 2015-12-10 23:20:38 | 显示全部楼层 |阅读模式
有一个表的结构类似系统组织表,
id1 字段a,字段b,字段c
id2,字段a,字段b,字段c
id2@id1,字段a,字段b,字段c
id2@id3,字段a,字段b,字段c

想要实现更新任何一条id包含id2的记录内容时,同步更新所有包含id2的记录的所有字段。因为字段较多。
尝试方法1,KSQL语句:update table r set (r.a,r.b,r.c)=(select rr.a,rr.b,rr.c from table rr where rr =id2@id1 ) where r like 'id2%' and r <>'id2@id’.
报错:编码: JUSTEP154115; 提示: KSQL语法错误, update r ^^set r.fName=rr.中未找到需要的元素, 位置9期望是<Identifier>
方法2 SQL: update r set r.a=rr.a, r.b=rr.b,r.c=rr.c from table r, table rr where ( r like 'id2%' and r <>'id2@id’) and rr =id2@id1
报错:Caused by: java.sql.SQLException: 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 'from table r, table rr where ( r like id2% an' at line 1

请教下这样的需求该怎么写?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35932
发表于 2015-12-11 11:34:50 | 显示全部楼层
KSQL中update的语法参考
ksql.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

34

主题

135

帖子

637

积分

高级会员

Rank: 4

积分
637
QQ
 楼主| 发表于 2015-12-11 15:58:59 | 显示全部楼层
KSQL 的update 子查询的方式是只能一个字段对应一个查询吗?多个字段更新的时候要怎么做?
UPDATE SA_OPPerson p SET p.sName = (SELECT o.sName FROM SA_OPOrg o WHERE o = 'OGN01') ,p.sCode=(SELECT o.sCodeFROM SA_OPOrg o WHERE o = 'OGN01')
要这样写吗?有没有简单一点的方式。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35932
发表于 2015-12-11 18:31:49 | 显示全部楼层
简单的就是可以用sql实现,KSQL多个字段的没有测试过,本地需要测试一下
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

34

主题

135

帖子

637

积分

高级会员

Rank: 4

积分
637
QQ
 楼主| 发表于 2015-12-13 14:23:51 | 显示全部楼层
SQL是直接这样写就可以了吗?
Connection conn = null;
PreparedStatement pstmt = null;
// 取得数据库连接
conn = com.justep.model.ModelUtils.getConnectionInTransaction("/OA/common/data");
// 更新字段
pstmt = conn.prepareStatement(updatePsnSql);
pstmt.execute();
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35932
发表于 2015-12-14 13:57:05 | 显示全部楼层
可以这样写,也可以参考
  1. String sql = "select fYF,fNF,fJE from AP_XT";
  2.                 HashMap<String, String> sqlMap = new HashMap<String, String>();
  3.                 sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
  4.                 Table table = SQL.select(sqlMap, null, ModelUtils.getModel("/demo/report/data"), null);
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-10 00:11 , Processed in 0.063236 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表