有这样一个SQL,求教:
A表:ID,FILE_PATH,FILE_VERSION_ID
B表:ID,FILE_PATH
需要更新:
A表的FILE_VERSION_ID = B表的ID,
条件:A表的FILE_PATH = B表的FILE_PATH
就是SET XX = (多个结果集)
WHERE FILE_PATH = (多个结果集)
需要怎么对应起来呢。select t2.file_version_id from file_version t2 inner join file_file t3
on t3.file_path=t2.file_final_path
这是查询出的file_version_idselect t4.file_final_path from file_version
这是查询出的file_pathupdate file_file t1 set t1.file_version_id =
(查询出的file_version_id)
where t5.file_path = (查询出的file_path) 有可能查询出的file_version_id的数量比查询出的file_final_path的数量多。
因为file_file表中的file_path可以重复,而file_version表中只存最新的版本。
A表:ID,FILE_PATH,FILE_VERSION_ID
B表:ID,FILE_PATH
需要更新:
A表的FILE_VERSION_ID = B表的ID,
条件:A表的FILE_PATH = B表的FILE_PATH
就是SET XX = (多个结果集)
WHERE FILE_PATH = (多个结果集)
需要怎么对应起来呢。select t2.file_version_id from file_version t2 inner join file_file t3
on t3.file_path=t2.file_final_path
这是查询出的file_version_idselect t4.file_final_path from file_version
这是查询出的file_pathupdate file_file t1 set t1.file_version_id =
(查询出的file_version_id)
where t5.file_path = (查询出的file_path) 有可能查询出的file_version_id的数量比查询出的file_final_path的数量多。
因为file_file表中的file_path可以重复,而file_version表中只存最新的版本。
解决方案 »
- 求ado.net连接oracle数据库
- 创建作业失败
- 存储过程:要求使用游标遍历的方式,将SC表的值全部更新到SC_TOTAL的各列中,并计算平均分
- oracle emp表 对于工资高于本部门平均水平,人数多于一人,列出部门号 工资 按部门号进行排序
- 如何在命令提示符下连接ORACLE数据库?
- 没有create session权限
- 北京外企高薪聘有ERP经验的Oracle开发人员
- 请教PRO C中关于游标的问题
- 大家看看这个字段的属性如何修改
- 问高人在C中如何调用oracle数据库中的数据
- ORACLE表字段有中文和字母2种,怎样安英文字母顺序排序;
- 求alter package compile body的用法
为什么A表会比B表多呢。
以为添加一个文件的时候,需要忘A表中插入一条新的记录,版本号为当前版本号+1。
而如果当前没有版本号,也就是新版本号为1,那么就往B表中插入一条新数据。
如果当前有版本号,也就是新版本号大于1,那么就更新B表中现有的记录。
A表:ID,FILE_PATH,FILE_VERSION_ID
B表:ID,FILE_PATH需要更新A表的FILE_VERSION_ID字段为B表的ID字段,条件是A表的FILE_PATH等于B表的FILE_PATH
update A set FILE_VERSION_ID = ( SELECT B.ID FROM B WHERE A.FILE_PATH = B.FILE_PATH AND ROWNUM <=1)
结贴。
select ID,FILE_PATH,FILE_VERSION_ID from A where exists(select id from b where b.file_paht=A.FILE_PATH);
--更新
update A set a.FILE_VERSION_ID=(select id from b where b.file_paht=A.FILE_PATH where rownum=1)
这个 等于就是 同一个FILE_PATH每次都是返回的相同的id 这个不知道满足LZ需求么 如果是每次返回最新版本id 这么应该可以吧update A set FILE_VERSION_ID = ( SELECT max(B.ID) FROM B WHERE A.FILE_PATH = B.FILE_PATH)