Oracle查询一个表的数据插入到另一个表

本文介绍了如何使用SQL语句将一个表的字段数据插入到另一个表,以及如何进行多表联合查询实现多个字段的数据迁移。示例包括单表数据插入和基于条件的多表数据合并,涉及sys_guid生成、条件筛选等操作。
  • 将一个表的字段数据插入到另一个表的字段数据中
	/** sys_guid 随机id */
	insert into t_A (shouruid,userid,username,userdeptid,userdeptname)
		select sys_guid(),userid,username,deptcode,deptname from t_B 
  • 多个表的多个字段,插入同一个表的多个字段
		insert into t_A (shouruid,userid,username,userdeptid,userdeptname)
		select sys_guid(),B.userid,B.username,C.deptcode,C.deptname
		from t_B B, t_Bmx C 
		where B.Bcode= C.Bcode  and B.scbj = '0' and 
		B.mxcode  not in (select procode from t_A where ywlx = 'ABC' and scbj = '0')
Oracle 数据库中,将一个数据插入一个中是常见的操作,适用于数据迁移、数据初始化等场景。以下是几种常用的方式及对应的 SQL 语句: ### 插入全部数据 如果目标不存在,可以通过 `CREATE TABLE ... AS SELECT` 语句创建插入数据: ```sql CREATE TABLE XTHAME.tab1 AS SELECT * FROM DSKNOW.COMBDVERSION; ``` 如果目标已经存在,可以使用 `INSERT INTO ... SELECT` 语句插入数据: ```sql INSERT INTO tab1 SELECT * FROM tab2; ``` ### 插入指定字段数据 如果只需要将一个的某些字段数据插入一个中,可以指定字段名并配合 `SELECT` 语句完成: ```sql INSERT INTO XTHAME.tab1(pk_bdversion, vbdcode) SELECT pk_bdversion, vbdcode FROM DSKNOW.COMBDVERSION; ``` 注意:字段名列 `(Field1, Field2, ...)` 不能加单引号,否则会报错 `ORA-00928: 缺失 SELECT 关键字`。 ### 插入联合查询数据 如果需要从多个查询数据插入到同一个中,可以使用多联合查询的方式。例如,从 `DSKNOW.COMBDVERSION` 和 `DSKNOW.RQT_EXAMQUEST` 中提取数据插入到 `XTHAME.BUTTON` 中: ```sql INSERT INTO XTHAME.BUTTON (button_id, button_name, button_code) SELECT a.pk_examquest, b.pk_bdversion, a.vquestname FROM DSKNOW.COMBDVERSION b, DSKNOW.RQT_EXAMQUEST a WHERE a.pk_examquest = '1001SX1000000000JOBV' AND b.pk_bdversion = '1000BDV1000010101001'; ``` ### 注意事项 - 插入操作时,源和目标的字段类型及顺序需要保持一致。 - 如果目标有主键或唯一约束,确保插入数据不会导致冲突。 - 对于大数据量的插入操作,建议使用事务控制(如 `BEGIN ... COMMIT`)以避免数据不一致问题。 通过上述方法,可以灵活地将一个数据插入一个中,满足不同的业务需求[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值