SQL中一次插入多条数据

SQL中一次插入多条数据

SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据。

1.

语法:select 字段列表 into 新表 from 源表

注意事项:此种方法新表是系统自动创建,语句执行前不可以存在新表,并且新表只能保留源表的标识列特性,其他约束不能保留。

若只需要源表的数据结构,我们可以在语句中添加(top 0)

2.

语法:insert into 目的表 select 字段列表 from 源表

注意事项:此种方法目的表必须在语句执行前存在,并且每一列要与源表对应。

在此处还有一些有趣的问题,当我使用以下代码来插入多条数据时:

select top 0 * into newstudent from  student
insert into newstudent select * from student

这里会发生这样的报错:

因为NewClass表中ClassId为标识列,所以我们不能插入值。

我们的解决办法如下:

select top 0 * into newstudent from  student
set identity_insert newstudent on
insert into newstudent (classid,classname) select * from student

我们把newstudent 的标识列插入写为显示的,并且添加了列名字段便可以插入了。

之后我们再创建一个新的NewClass2:

select top 0 *into NewClass2 from MyClass
set identity_insert NewClass2 on
insert into NewClass2(ClassId,ClassName) select* from MyClass

此时还会报错,这是因为我们之前设置了newclass的标识列插入为on,我们必须先关闭后才可以往newclass2插入值,代码如下:

select top 0 *into NewClass2 from MyClass
set identity_insert newclass off
set identity_insert NewClass2 on
insert into NewClass2(ClassId,ClassName) select* from MyClass

至此我们解决了使用第二种方法一次插入多条数据。

3.

语法:insert into 表(字段列名) select 值 union select值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL语句,子查询可以用于将一个或多个表或视图的值添加到另一个表,同时也可以用于同时插入多行数据。 例如,可以使用INSERT INTO语句和SELECT子查询来实现子查询插入数据的功能。 具体地说,可以使用以下格式的语句来进行子查询插入数据: INSERT INTO 目标表名 (列1, 列2, 列3, ...) SELECT 子查询的列1, 子查询的列2, 子查询的列3, ... FROM 源表名 WHERE 条件; 例如,如果我们有一个目标表为table1,它包含列column1和column2,我们想要将另一个表table2满足某个条件的数据插入到table1,可以使用以下语句: INSERT INTO table1 (column1, column2) SELECT column1, column2 FROM table2 WHERE 条件; 这样就可以将满足条件的数据从table2插入到table1。需要注意的是,插入的列数和类型要与目标表的结构匹配。 另外,还可以使用字段和字符串的拼接函数来进行插入操作。例如,在MySQL可以使用concat函数来将字段和字符串拼接起来,然后插入到目标表。 这样的语句格式如下: INSERT INTO 目标表名 (列1, 列2, 列3, ...) SELECT concat('字符串', 字段), 字段, 字段, ... FROM 源表名 WHERE 条件; 总结起来,SQL子查询插入数据的方法可以根据具体的需求选择合适的语句格式,通过SELECT子查询和INSERT INTO语句实现数据插入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SQL插入数据时连表查询(利用子查询一次性 insert 多条数据)](https://blog.csdn.net/weixin_43433807/article/details/89395566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值