博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多表insert操作详解
阅读量:5227 次
发布时间:2019-06-14

本文共 2131 字,大约阅读时间需要 7 分钟。

--1.无条件的多表insert allcreate table emp_1 as select id,last_name from s_emp where 1=0;create table emp_2 as select * from s_emp where 1=0;create table emp_3 as select * from s_emp where 1=0;--没有条件,向多个目标表全量插入,必须有allinsert all--不指定emp_1后面的列,也不指定values,那么emp_1中的所有列类型和顺序与查询的列的类型和顺序一致--也就是emp_1中只有查询结果中的那几列,而且类型和顺序与其一致into emp_1--指定了emp_2后面的列,没有values,表示emp_2中要插入的列被选择出来,与查询的结果列类型和顺序一致--emp_2中也可能有很多列,不止这两列into emp_2(id,last_name)--指定emp_3后面的列,也指定values,那么values后面的列名必须与查询结果一致,如果--查询中有别名,必须在values中使用别名。emp_3中指定的列类型和顺序必须与values保持一致--emp_3中也可能列数大于指定的列数into emp_3(id,last_name) values(s_id,s_last_name)select id s_id,last_name s_last_name  from s_emp;--2.带条件的多表insert all--conditional insert all:all可以省略,但不建议.insert all--将查询结果中为s_id>20的插入,条件中指定的列必须与查询的结果名字一致,如果有别名,用别名when s_id>20 theninto emp_1--s_last_name为M开头的插入,可能插入的行与s_id>20有重复when s_last_name like 'M%'theninto emp_2(id,last_name)--如果指定else,则不满足上面两个条件的插入到emp_3,插入的行不会与上面两个重复elseinto emp_3(id,last_name) values(s_id,s_last_name)select id s_id,last_name s_last_name  from s_emp;  --3.带条件的多表insert first--Insert first只有带条件的,没有不带条件的。--语法只要将insert all中的all改为first就可以了。这里的first不可以省略。省略那么默认就是allinsert first--将查询结果中为s_id>20的插入,条件中指定的列必须与查询的结果名字一致,如果有别名,用别名when s_id>20 theninto emp_1--s_last_name为M开头的插入,插入的行与s_id>20没有重复when s_last_name like 'M%'theninto emp_2(id,last_name)--如果指定else,则不满足上面两个条件的插入到emp_3,插入的行不会与上面两个重复elseinto emp_3(id,last_name) values(s_id,s_last_name)select id s_id,last_name s_last_namefrom s_emp;--4.选择插入Pivoting insert--使用pivoting insert实现将非关系性表记录转换为关系型表中存储。Pivot旋转是OLAP中的一个基本改变,提供多维度数据分析。insert allinto sales_info values(employee_id,week_id,sales_mon) --分别按每个工作日插入into sales_info values(employee_id,week_id,sales_tue)into sales_info values(employee_id,week_id,sales_wed)into sales_info values(employee_id,week_id,sales_thur)into sales_info values(employee_id,week_id,sales_fri)select employee_id,week_id,sales_mon,sales_tue,sales_wed,sales_thur,sales_frifrom sales_source_data;多表insert使用限制:1. 只能对table使用多表insert,不能对视图或物化视图使用。2. 不能对远程表进行这个插入操作。3. 在做多表insert操作,不能指定一个表的集合表达式。4. 多表insert中的的into目标表加在一起的列数不能超过999 个。

 

转载于:https://www.cnblogs.com/huangbiquan/p/8001763.html

你可能感兴趣的文章
GIT笔记:将项目发布到码云
查看>>
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
查看>>
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
Apache Common-IO 使用
查看>>
再谈Vmware NAT的配置和路由流程
查看>>
javaScript数组去重方法汇总
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>