zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    一个C#操作Excel类,功能比较全
    以纯面向对象的JS编写最基本的数据字典案例
    使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码
    使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
    shiro和quartz同时存在于项目中,解决冲突的方案
    以最简单的登录为例,诠释JS面向对象的简单实例
    BeJavaGod
    前端这条路怎么走,作为一名后端er,说说我的见解
    安全框架
    文档!重要的事情说第四遍~
  • 原文地址:https://www.cnblogs.com/green-jcx/p/9350025.html
Copyright © 2011-2022 走看看