小弟请教个sql

will2046 2011-01-17 12:41:09
数据库:Oracle。现在有A,B,C三张表,现在要从C表中选取满足一定条件的数据插入到A表中,但是,C表中的某个字段需要通过B表对应转换之后再插入A表当中,
insert into A
select col1,col2...--比如说col1需要通过B表转换之后,存入A表中
from B
where ....
这个sql应该怎马写?小弟先谢过了。
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
will2046 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 47522341 的回复:]

insert into a(col1,col2)
select b.col2,c.col2
from c,b
where c.col1 = b.col1;
[/Quote]
从C表查询时,有可能是多条数据,这时insert的话,会有问题啊
  • 打赏
  • 举报
回复
你先把符合添加的查询结果写出来就好了
多表连接应该不是很困难吧
47522341 2011-01-17
  • 打赏
  • 举报
回复
insert into a(col1,col2)
select b.col2,c.col2
from c,b
where c.col1 = b.col1;
lxyzxq2008 2011-01-17
  • 打赏
  • 举报
回复
insert into a(col1,col2)
select b.col2,c.col2
from c,b
where c.col1 = b.col1;
-不会有问题的啊,多条也没事!
dl_tianj 2011-01-17
  • 打赏
  • 举报
回复
以TEST_AC c表为基准,向TEST_AA a表插入数据,TEST_AB b表为转换表,a表中数据来自c表,当b表中存在col1与c表的col1相同的记录时,取得b表col2字段插入a表,多条记录时亦插入多条,无记录时亦插入a表,对应字段为空。

代码如下:
insert into TEST_AA a (AA_COL1,AA_AB_COL2,AA_AC_COL2) 
select c.AC_COL1,b.AB_COL2,c.AC_COL2 from TEST_AC c,TEST_AB b where c.AC_COL1=b.AB_COL1(+)


测试如下:
c表记录:
20110117 From:C表数据1
20110116 From:C表数据2
20110118 From:C表数据3
b表记录:
20110117 From:B表记录1
20110117 From:B表记录2
20110116 From:B表记录2

执行sql后的a表记录:
20110116 From:B表记录2 From:C表数据2
20110117 From:B表记录1 From:C表数据1
20110117 From:B表记录2 From:C表数据1
20110118 From:C表数据3

需求有点不是太清晰,是否是要达成上述的效果?
南风呼呼的吹 2011-01-17
  • 打赏
  • 举报
回复
这么个插入 用存储过程太过了吧 你的需求不怎么明确啊~~
oO寒枫Oo 2011-01-17
  • 打赏
  • 举报
回复

insert into A (col1,col2)
select C.col1,C.col2
from C
where col1 = (select col1 from B);

oO寒枫Oo 2011-01-17
  • 打赏
  • 举报
回复

insert into a (col1,col2)
select b.col1,c.col2
from b
where col1 = (select col1 from c);
will2046 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuomingwang 的回复:]

你先把符合添加的查询结果写出来就好了
多表连接应该不是很困难吧
[/Quote]
批量插入有什么好的办法吗?用存储过程神马的吗?

17,377

社区成员

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

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