insert into persons (id_p, lastname , firstName, city ) values (200,\'haha\' , \'deng\' , \'shenzhen\'), (201,\'haha2\' , \'deng\' , \'GD\'), (202,\'haha3\' , \'deng\' , \'Beijing\'); 这是mysql的插入语句。 但是我们在oracle中是报错的,语句l
那怎么办呢
也许熟悉oracle数据库的可能知道从oracle9i版本以后,可以使用一种方法即:
“INSERT ALL INTO a表
VALUES(各个值)
INTO a表 VALUES (其它值)
INTO a表 VALUES(其它值) …. 再跟一个SELECT 语句”。
例如
INSERT
ALL
INTO
d5000.ac_terminal_connect_info
(
id ,
feeder_id,
esn ,
name ,
description
)
VALUES
(
(
select
id
from
d5000.dms_terminal_info
where
esn_id = \’025BHN6RJB504521\’ limit 1
)
,
(
select
feeder_id
from
d5000.dms_terminal_info
where
esn_id = \’025BHN6RJB504521\’ limit 1
)
,
\’025BHN6RJB504521\’,
\’大厂地税局TTU-华为六合管理\’ ,
\’\’
)
INTO
d5000.ac_terminal_connect_info
(
id ,
feeder_id,
esn ,
name ,
description
)
VALUES
(
(
select
id
from
d5000.dms_terminal_info
where
esn_id = \’025BHN6RJB503985\’ limit 1
)
,
(
select
feeder_id
from
d5000.dms_terminal_info
where
esn_id = \’025BHN6RJB503985\’ limit 1
)
,
\’025BHN6RJB503985\’ ,
\’淳溪东甘#3配变TTU-华为高淳管理\’,
\’\’
)
SELECT 1 FROM DUAL
这样就可以啦!显示两条插入成功过。
后边跟的SELECT 语句我们可以从虚拟表里查如 SELECT 1 FROM DUAL。注意后边跟的SELECT语句可以随意,不过不是把它SELECT出来的内容插入前边的表里,而是起到前边的多个数据每次插入多少行的作用,这个多少行是和后边跟的SELECT语句查出来几条而定的,如后边的跟的SELECT 语句查出了15条记录,那么前边的”INSERT ALL INTO a表 VALUES(各个值1) INTO a表 VALUES (其它值2) INTO a表 VALUES(其它值3)“就会先插入值1对应的各个字段插入15条记录,然后插入值2各个对应的字段15条记录,然后插入值3对应的各个字段15条记录,也就是说有点按列插入的意思。
我们要的是批量插入多个VALUES这样的一条记录,所以后边的SELECT 语句只要能查出一条记录就行,建议大家后边用SELECT 1 FROM DUAL。