insert into table (a,b,c) select
本文为博主原创,转载请注明出处:
在项目中,需要统计数据,从基础表中的数据进行统计,并插入到汇总 表中,
(1)语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
或者:Insert into Table2 select * from Table1
注意:(1)要求目标表Table2必须存在,并且字段field,field2...也必须存在
(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2...中必须包括主键
(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:
Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1)
应用实例展示:
<insert id="addMonthStatistics" parameterType="com.statistics.model.MonthStatistics">
INSERT INTO tbl_statistics_month(month,livePlayCount,vodPlayCount,liveFlow,vodFlow,storeSpace,storeResidueSpace)
SELECT DATE_FORMAT(#{month}, '%Y%m') AS 'month', SUM(t.livePlayCount) AS 'livePlayCount', SUM(t.vodPlayCount) AS 'vodPlayCount', SUM(t.liveFlow) AS 'liveFlow', SUM(t.vodFlow) AS 'vodFlow'
, SUM(t.storeSpace) AS 'storeSpace', SUM(t.storeResidueSpace) AS 'storeResidueSpace'
FROM (
SELECT CASE u.playerType WHEN '' THEN u.num ELSE END AS 'livePlayCount', CASE u.playerType WHEN '' THEN u.num ELSE END AS 'vodPlayCount', CASE u.playerType WHEN '' THEN u.flowNum ELSE END AS 'liveFlow', CASE u.playerType WHEN '' THEN u.flowNum ELSE END AS 'vodFlow', AS 'storeSpace'
, AS 'storeResidueSpace'
FROM (
SELECT playerType, COUNT(*) AS num, ifnull(SUM(bytesSend),) AS 'flowNum'
FROM tbl_player_statistics
WHERE playerTime BETWEEN CONCAT(DATE_FORMAT(#{month},'%Y-%m'),'-01 00:00:00') AND CONCAT(DATE_FORMAT(last_day(#{month}),'%Y-%m-%d'),' 23:59:59')
GROUP BY playerType
) u
UNION ALL
SELECT AS 'livePlayCount', AS 'vodPlayCount', AS 'liveFlow', AS 'vodFlow', ifnull(SUM(fileSize),) AS 'storeSpace'
, - ifnull(SUM(fileSize),) AS 'storeResidueSpace'
FROM tbl_person_space
) t
</insert>
insert into table (a,b,c) select的更多相关文章
- 【原创】大叔问题定位分享(22)hive同时执行多个insert overwrite table只有1个可以执行
hive 2.1 一 问题 最近有一个场景,要向一个表的多个分区写数据,为了缩短执行时间,采用并发的方式,多个sql同时执行,分别写不同的分区,同时开启动态分区: set hive.exec.dyna ...
- CREATE TABLE 表名 AS SELECT 语句
1.新表不存在复制表结构即数据到新表 ? 1 2 create table new_table select * from old_talbe; 这种方法会将old_table中所有的内容都拷贝过来, ...
- Hive:insert into table 与 insert overwrite table 区别
创建测试表,来测试看看测试结果: create table test(name string,pwd string,createdate string)row format delimited fie ...
- hive INSERT OVERWRITE table could not be cleaned up.
create table maats.account_channel ROW FORMAT DELIMITED FIELDS TERMINATED BY '^' STORED AS TEXTFILE ...
- Hive-insert into table 与 insert overwrite table 区别
区分insert into 和 insert overowrite: 0. 命令格式 INSERT OVERWRITE|INTO TABLE tablename [PARTITION (partcol ...
- insert into table 插入多条数据
方法1: insert into `ttt` select '001','语文' union all select '002','数学' union all select '003','英语'; 方法 ...
- insert into TABLE by SELECT ...
insert into isp_rmi3 ( select r.id, r.blue_id, r.sell_channel,NULL, r.interface_id, NULL, NULL, r.ur ...
- python3 速查参考- python基础 9 -> MySQL基础概念、数据库create、alter、insert、update、delete、select等基础命令
前置步骤: 下载一个绿色版的mysql数据库客户端连接工具 :http://wosn.net/821.html mysql平台为win7(以后会有CentOS上的) 学习目的: 掌握数据库的基本概念, ...
- 数据库中增加操作insert into的用法和查询select的用法
insert into的用法 1.一条insert into 可以插入多条记录 2.insert into 能判断主键是否冲突,和做出冲突处理 如果主键冲突的话会报错,还能写成如果冲突就更新的形式格式 ...
随机推荐
- linux 查看python安装路径,版本号
一.想要查看ubuntu中安装的python路径 方法一:whereis python 方法二:which python 二.想要查看ubuntu中安装的python版本号 python ...
- wrapper class (Integer 为例)
1,导入 Integer a = 100; Integer b = 100; Integer c = 150; Integer d = 150; a == b; true c == d; false ...
- 10 分钟速成 Python3
Python 是由吉多·范罗苏姆(Guido Van Rossum)在 90 年代早期设计. 它是如今最常用的编程语言之一.它的语法简洁且优美,几乎就是可执行的伪代码. 注意:这篇教程是基于 Pyth ...
- 课堂测试代码(未完全实现,部分代码有bug,仅供参考)
//信1705-3 20173507 周龙海package account; public class account { private String accountID; private Stri ...
- DNS缓存中毒的知识
网络上出现互联网漏洞——DNS缓存漏洞,此漏洞直指我们应用中互联网脆弱的安全系统,而安全性差的根源在于设计缺陷.利用该漏洞轻则可以让用户无法打开网页,重则是网络钓鱼和金融诈骗,给受害者造成巨大损失. ...
- 清明 DAY2
数论 数论是研究整数性质的东西 也就是 lim π(x)=x/ ln x (x->无穷) 证明: ∵ p|ab ∴ ab有因子p 设 a=p1k1p2k2......prkr b= ...
- java提供的线程池的使用
应用场景,比如你有个业务模块,非常耗时,并且还需要重复调用5次. 如果你写个for循环调用5次,调用一次3秒,那么5次就15秒,不是很友好. 这时,如果你用线程池就方便了,多线程跑,都跑完,收集到结果 ...
- sqlalchemy多对多查询
# coding:utf-8 from sqlalchemy import create_engine, Column, String, Integer, ForeignKey, Table from ...
- Linux使用scp远程传输命令进行服务器文件互传(阿里云服务器)
阿里云同一个区的的两个云服务器,通过内网进行文件传输,速度快不说(正常传输文件的速度能达到35m~50m/s),还不占用公网带宽. 阿里云云服务器有一个安全组策略,可能需要设置下 内网入.出方向的IP ...
- python面向对象三大特性之一继承、多态、封装
继承,即在定义一个类时,以另一个类为参数,则称这个新定义的类继承了参数类,父类又称为基类. 单继承表示只继承一个类,多继承表示继承多个类. class parent1: pass class pare ...