可以只用一句sql insert into 同时往数据库里增加多条记录吗?

silno 2013-08-03 01:16:15
有多条记录
字段 D1 D2 D3
记录 11 22 33
44 32 54
56 63 78

insert into table1 (D1,D2,D3)values(11,22,33)
如果增加3条记录,一般都用循环的方法来增加,

可以只写一句sql,同时增加着3条记录吗?不用循环
...全文
979 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2013-08-05
  • 打赏
  • 举报
回复
引用 楼主 silno 的回复:
有多条记录 字段 D1 D2 D3 记录 11 22 33 44 32 54 56 63 78 等 insert into table1 (D1,D2,D3)values(11,22,33) 如果增加3条记录,一般都用循环的方法来增加, 可以只写一句sql,同时增加着3条记录吗?不用循环
如果楼主sql server是2005以上版本的,还可以用 insert into table1 (D1,D2,D3) values(11,22,33),(44,32,54),(56,63,78)
beyondcj 2013-08-05
  • 打赏
  • 举报
回复
KeepSayingNo 2013-08-05
  • 打赏
  • 举报
回复
你既然这多条记录,那肯定是在某一个表中

insert into B
select * from A
Shawn 2013-08-03
  • 打赏
  • 举报
回复
--拼个类似下面的用UNION ALL连起来的SQL
INSERT INTO tablename
SELECT 11, 22, 33 UNION ALL
SELECT 44, 32, 54 UNION ALL
SELECT 56, 63, 78

--或者,前台拼个XML,传到SQL SERVER,解析XML批量插入
DECLARE @items XML
SET @items = '
<Items>
	<Item>
		<D1>11</D1>
		<D2>22</D2>
		<D3>33</D3>
	</Item>
	<Item>
		<D1>44</D1>
		<D2>32</D2>
		<D3>54</D3>
	</Item>
</Items>
'

INSERT tablename(D1, D2, D3)
SELECT
    D1=T.c.value('(./D1/text())[1]', 'INT'),
	D2=T.c.value('(./D2/text())[1]', 'INT'),
	D3=T.c.value('(./D3/text())[1]', 'INT')
FROM @items.nodes('/Items/Item') AS T(c)
lzw_0736 2013-08-03
  • 打赏
  • 举报
回复
如果是前台程序,可以先将记录循环保存在临时表,再 insert into table1 (D1,D2,D3) select * from 临时表
hard_learner 2013-08-03
  • 打赏
  • 举报
回复
同意1楼版主的方式,或者可以尝试下insert into table(d1,d2,d3) select 1,1,1 union select 2,2,2 这种形式,例如 create table temp ( id int identity(1,1) primary key, name nvarchar(20) ) go select * from temp insert into temp select 'aaa' union select 'bbb' union select 'ccc'
發糞塗牆 2013-08-03
  • 打赏
  • 举报
回复
你的记录如果是来源于 一个表,可以: insert into table1(D1,D2,D3) select * from 表 where

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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