insertinto多条记录,oracle insert 多条记录
MySql中使用INSERT INTO语句更新多条数据的例子
我们知道当插入多条数据的时候insert支持多条语句:
复制代码
代码如下:
INSERT
INTO
t_member
(id,
name,
email)
VALUES
(1,
'nick',
'nick@126.com'),
(4,
'angel','angel@163.com'),
(7,
'brank','ba198@126.com');
但是对于更新记录,由于update语法不支持一次更新多条记录,只能一条一条执行:
复制代码
代码如下:
UPDATE
t_member
SET
name='nick',
email='nick@126.com'
WHERE
id=1;
UPDATE
t_member
SET
name='angel',
email='angel@163.com'
WHERE
id=4;
UPDATE
t_member
SET
name='brank',
email='ba198@126.com'
WHERE
id=7;
这里问题就出现了,倘若这个update
list非常大时(譬如说5000条),这个执行率可想而知。
这就要介绍一下在MySql中INSERT语法具有一个条件DUPLICATE
KEY
UPDATE,这个语法和适合用在需要判断记录是否存在,不存在则插入存在则更新的记录。
具体的语法可以参见:
基于上面这种情况,针对更新记录,仍然使用insert语句,不过限制主键重复时,更新字段。如下:
复制代码
代码如下:
INSERT
INTO
t_member
(id,
name,
email)
VALUES
(1,
'nick',
'nick@126.com'),
(4,
'angel','angel@163.com'),
(7,
'brank','ba198@126.com')
ON
DUPLICATE
KEY
UPDATE
name=VALUES(name),
email=VALUES(email);
注意:ON
DUPLICATE
KEY
UPDATE只是MySQL的特有语法,并不是SQL标准语法!
如何一次插入多条记录的SQL语句?
在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:\x0d\x0a--添加一条记录 \x0d\x0aINSERT INTO tableName(col1,col2,col3) VALUES (1,2,3) \x0d\x0a \x0d\x0a--添加多条记录 \x0d\x0aINSERT INTO tableName(col1,col2,col3) \x0d\x0aSELECT 3,4,5 \x0d\x0aUNION ALL \x0d\x0aSELECT 6,7,8 \x0d\x0a \x0d\x0a--从另外的一张表中读取多条数据添加到新表中 \x0d\x0aINSERT INTO tableName(col1,col2,col3) \x0d\x0aSELECT a,b,c FROM tableA \x0d\x0a \x0d\x0a--从其他的多张表中读取数据添加到新表中 \x0d\x0aINSERT INTO tableName(col1,col2,col3) \x0d\x0aSELECT a,b,c FROM tableA WHERE a=1 \x0d\x0aUNION ALL \x0d\x0aSELECT a,b,c FROM tableB WHERE a=2 \x0d\x0a上边代码中的into都可以省略!\x0d\x0a上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。\x0d\x0a另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。 \x0d\x0aINSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')\x0d\x0acreate table [TEST]\x0d\x0a(\x0d\x0a [NUM_ID] int primary key\x0d\x0a)\x0d\x0ago\x0d\x0adeclare @temp int\x0d\x0aset @temp=1;\x0d\x0awhile @temp
回答于?2022-12-11
mysql insert into 多条数据
mysql 使用 insert into 语句时报错:
报错语句样式如下:
修改为如下即可:
SQLServer的Insert into插入多条记录的问题
insert?into?wlx_test?(aaa,bbb,ccc,ddd,eee,vote)?
select?'sasj',11,getdate(),1.1,2.22,'1f3f3sf1'
union?all
select?'sasj',11,getdate(),1.1,2.22,'1f3f3sf2'
union?all
select?'sasj',11,getdate(),1.1,2.22,'1f3f3sf3'
使用Union all?语句将多个结果集转为一个结果集,然后再执行插入
一条insert语句批量插入多条记录
首先我们的测试表是一条数据都没有的。
要用一条数据就插入多条数据,我们也是可以用insert into语句来处理的,我们只要在values里指定多条记录的值就行了,每条记录间用逗号来隔开就行。代码如图
执行这条语句后,我们从执行结果上看,也可以看到插入了三条数据。
再看到这个表里的数据,看是不是插入了三条新的数据。
从图中可以看到,确实有3条数据。