[求助] 多条件更新表字段问题

hanson1025 2018-05-17 03:54:45
现在我有A表和B表
A表包含 ID,PRICE两个字段
B表包含ID,PRODUCT_ID两个字段;A表和B表的ID是一样的
读出来的数据是PRODUCT_ID和PRICE
我现在有多个PRODUCT_ID需要更新PRICE,需要根据PRODUCT_ID获得B表对应的ID
再更新A表中这个ID的PRICE的值
我只会用select id from b where product_id = '商品编码'获得ID
然后再update a set price = '新值' where id = '上面获得的id'
可是现在product_id和很多,我要怎么批量更新一下呢?
求大神教导一下
...全文
529 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanson1025 2018-05-18
  • 打赏
  • 举报
回复
引用 8 楼 wmxcn2000 的回复:
excel 中的数据,导入到 oracle 了吗?
并没有,excel数据没有和他相同的表,不能导入吧?
卖水果的net 2018-05-18
  • 打赏
  • 举报
回复
excel 中的数据,导入到 oracle 了吗?
yan_jg 2018-05-18
  • 打赏
  • 举报
回复
首先你肯定有所有新值对应的商品编码,Excel的为例 create table a (b number(16,4),c number(16,4)); 用plsql select * from a for update; 解锁后把excel内容粘贴进去 然后执行下面语句 拼接sql SELECT 'UPDATE A SET PRICE = '||b||' WHERE EXISTS (SELECT 1 FROM B WHERE B.ID = A.ID AND B.PRODUCT_ID = '||c||');' FROM a ; 粘贴竖行 执行 .没问题 commit
hanson1025 2018-05-18
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
你用 excel 画一下吧,把两张表的数据也出给来,预期结果也给出来。


不知道这样清楚不呢?
卖水果的net 2018-05-18
  • 打赏
  • 举报
回复
建一张临时表,把 excel 导入后,再执行 update ,最后再删除这个临时表。
卖水果的net 2018-05-17
  • 打赏
  • 举报
回复
你用 excel 画一下吧,把两张表的数据也出给来,预期结果也给出来。
hanson1025 2018-05-17
  • 打赏
  • 举报
回复
引用 2 楼 s1024783043 的回复:
UPDATE A SET PRICE = '新值' WHERE EXISTS (SELECT 1 FROM B WHERE B.ID = A.ID AND B.PRODUCT_ID = '商品编码')
新值和商品编码都有多条,应该怎么填呢?
hanson1025 2018-05-17
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
update a set a.price = (select b.price from b where a.id = b.id) where exists(select * from b where a.id = b.id)
不好意思,没有说清楚,B表中没有price列,price是要手动输入进去的 比如B表中product_id = 9763 id = 13然后,我要修改A表中 id = 13 这一行 price列的值为4568.00 B表中product_id = 3568 id = 7然后,我要修改A表中 id = 7 这一行 price列的值为3369.00 我目前的方法:select id from b where product_id = '58759' 然后得到id值,比如为9,然后再执行一条update a set price = '6688.00' where id = 9 其中58759和6688.00都是会变的
卖水果的net 2018-05-17
  • 打赏
  • 举报
回复
update a set a.price = (select b.price from b where a.id = b.id) where exists(select * from b where a.id = b.id)
yan_jg 2018-05-17
  • 打赏
  • 举报
回复
UPDATE A SET PRICE = '新值' WHERE EXISTS (SELECT 1 FROM B WHERE B.ID = A.ID AND B.PRODUCT_ID = '商品编码')

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧