SQL INSERT INTO TABLE SELECT指定插入字段的新用法

首先声明开发用的数据库是Oracle ,其他数据库未做测试

今天开发中遇到个需求,就是把一张配置表TABLE1的某些字段查询出来插入到另一张表TABLE2中去,但是由于TABLE2中需要插入的字段实在是太多了,但我能从TABLE1中查询出来的字段很有限,其余的字段怎么办呢? 不插入就会报插入的值不够的SQL ERROR

但是以前也只写过INSERT INTO TABLE2(字段1,字段2) values(值1,值2)的写法

对于INSERT INTO TABLE2 SELECT * FROM TABLE1的写法,当两张表不统一,且字段名不对应的情况,该怎么办呢?

于是就尝试了一下:INSERT INTO TABLE2(字段1,字段2) SELECT * FROM TABLE1的写法。事实证明这样的写法是可以通过的。

例子:

INSERT INTO TABLE2(UUID,UNITID, TARGET_TYPE)   
SELECT '74fdac29-118a-492b-885b-58a3e12b70f4' AS UUID,conf.UNITID AS UNITID,'P' AS TARGET_TYPE FROM TABLE1 conf  WHERE DEVID='w999' AND UNITID='1';   
COMMIT;

 

 

此处只插入3个字段让SQL简短一些,方便理解。


但是特别声明:这个方法不能在上线的系统中正在使用的数据库中使用,因为最近听说了一个血的教训,有个哥们在有700万条数据的服务器中直接使用这个 SQL 迁移数据,导致数据库表被琐死,客户无法正常下单,故障一个多小时,给公司造成了特大的损失,然后那个哥们被开除了。

https://www.jianshu.com/p/88c58a09f95a

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值