SELECT查询结果集INSERT到数据表
简介
将查询语句查询的结果集作为数据插入到数据表中。
一、通过INSERT SELECT语句形式向表中添加数据
例如,创建一张新表AddressList来存储班级学生的通讯录信息,然后这些信息恰好存在学生表中,则可以从学生表中提取相关的数据插入建好的AddressList表中。
T-SQL语句如下:
insert into AddressList(姓名,地址,邮箱)
select name,address,email
from Students
语法快记:该语句和常规的插入语句语法很相似,为了更好的记住语法,即可理解此插入语句把values替换成了查询语句。
使用该语句插入数据的注意事项:
1.查询语句部分其中列的个数、顺序、数据类型必须与INSERT语句的指定列要保持一致,列名可以不相同。
2.INSERT语句插入数据的表必须是预先创建好的。
INSERT SELECT语句形式中的查询部分不仅可以是单表,可以支持不同形式的查询语句,只要保证查询结果集的列和要插入数据的列是匹配的即可。
1.联接查询作为数据
insert into AddressList (name,address)
select a.UserName,b.address from SYSTEM_Users a
inner join BASE_Customer b on a.code=b.code
2.UNION合并多个结果集作为数据
insert into AddressList(name,address)
select '张三','洛杉矶'
union
select '李四','旧金山'
union
select '王五','华盛顿'
3.数据来自其他数据库(跨数据库插入)
insert into StudentInfo(name)
select lxr FROM AgroDB.dbo.BASE_Customer
二、通过SELECT INTO语句形式将查询结果集的数据添加到新数据表
SELECT INTO语句形式的插入方式和INSERT INTO 语句形式插入方式有相同处和不同处。
相同:它们插入的数据都是来自SELECT查询结果集
不同:INSERT INTO 语句形式插入的数据表必须是预先创建,SELECT INTO语句形式的插入的数据表是在执行该语句时新创建的。
T-SQL语句如下:
select name,address,email
into AddressList
from Students
语法快记:整体结构就是查询语句的结构,即在from关键字之上指派了INTO关键字加新数据表名。
语句执行逻辑:
1.创建新数据表,新表的数据结构来自于查询语句指定的列。
2.将查询结果集的信息插入到新表中,只会插入SELECT 中指派的列,列可以指定部分也可以全部。
SELECT INTO语句形式会执行插入数据和创建表两种命令,这样会延伸到一个新问题:如何给新表中指定一个标识列?
因为标识列的数据是自增的,因此我们可以在SELECT INTO语句中加入标识列的创建,语法如下:
select IDENTITY(int,1,1) as Aid ,Students.name,Students.address,Students.email
into AddressList
from Students
SELECT查询结果集INSERT到数据表的更多相关文章
- Oracle生成查询包括对应于所有数据表记录语句中指定的字段名
应用:已知的字段名,表中的所有数据的查询数据库中包含的所有数据表的字段名 操作方法:指定字段名,用户数据库表,它可以执行以下查询 --Oracle生成查询包括对应于所有数据表记录语句中指定的字段名 d ...
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- 循环select查询结果集
--标记id --每次查询特定列比标记id大的第一条数据, --同时更新标记id,直到查询结果为空 ) set @id='' begin @id=id from T_SGZ where id>@ ...
- PL/SQL 查询结果集直接修改数据
使用t.rowid,查询可以直接在查询结果中修改提交 SELECT t.rowid,t.* from UC_ROLE t where ROLE_NAME like '% %'
- 【MySQL】 查询某个数据库有多少张数据表
SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'performanc ...
- 遍历查询结果集,update数据
select NULL mykey, * into #mytemp from dbo.DIM_DISTRIBUTOR declare @i int begin ) print @i )) where ...
- create table 使用select查询语句创建表的方法分享
转自:http://www.maomao365.com/?p=6642 摘要:下文讲述使用select查询语句建立新的数据表的方法分享 ---1 mysql create table `新数据表名` ...
- MySQL数据表查询操作
准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...
- MySQL数据表查询操
准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...
随机推荐
- linux buff/cache释放
手动释放cache # > /proc/sys/vm/drop_caches
- scala-04-set操作
Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的. Scala 集合分为可变的和不可变的集合. 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scal ...
- 误删centos的ps命令,恢复
脑子短路将/bin/ps文件删除.发现ps命令无法用了.下面是恢复方法 1,执行rpm -qf /bin/ps 查看ps命令所需要的rpm包 [root@iZm5e727lmif5lZ ~]# rpm ...
- Selenium3自动化问题二:各chrome版本对应的chromedriver版本
一:问题说明 最近用到selenium3在火狐浏览器中执行自动化脚本,遇到了一些问题,最后解决方案中占比最多的就是浏览器和驱动版本不一致导致的,故这里给出chrome.firefox驱动的不同版本对应 ...
- eclipse使用tomcat:run启动项目时修改默认端口
命令:-Dmaven.tomcat.port=8081 tomcat:run
- TRIZ解决问题方法
个人觉的成功是有规律的,那些成功的人士,都有一套处理事情的秘籍.只要我们的思维方式把那些秘籍融会贯通,并快速执行,我们有一天也会成功的. TRIZ解决问题的5点方法. 1.确定最终目标. 2.列出阻碍 ...
- C#网络爬虫--多线程处理强化版
上次做了一个帮公司妹子做了爬虫,不是很精致,这次公司项目里要用到,于是有做了一番修改,功能添加了网址图片采集,下载,线程处理界面网址图片下载等. 说说思路:首相获取初始网址的所有内容 在初始网址采集图 ...
- 数据结构与算法--最短路径之Dijkstra算法
数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...
- Django Rest Framework 请求流程
用户请求到django,首先经过wsgi,中间件,然后到url路由系统,执行视图类中继承APIView执行as_view方法,在源码中可以看到VPIView继承了django的View类,通过supe ...
- 你不知道的JavasScript上篇·第五章·原型·上
1.[[Prototype]] JS中的对象有一个特殊的[[Prototype]]内置属性,其实就是对于其他对象的引用.几乎所有的对象在创建时这个属性都被赋予一个非空的值 (proto) var my ...