zoukankan      html  css  js  c++  java
  • 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 '1' THEN u.num ELSE 0 END AS 'livePlayCount', CASE u.playerType WHEN '2' THEN u.num ELSE 0 END AS 'vodPlayCount', CASE u.playerType WHEN '1' THEN u.flowNum ELSE 0 END AS 'liveFlow', CASE u.playerType WHEN '2' THEN u.flowNum ELSE 0 END AS 'vodFlow', 0 AS 'storeSpace'
                    , 0 AS 'storeResidueSpace'
                FROM (
                    SELECT playerType, COUNT(*) AS num, ifnull(SUM(bytesSend),0) 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 0 AS 'livePlayCount', 0 AS 'vodPlayCount', 0 AS 'liveFlow', 0 AS 'vodFlow', ifnull(SUM(fileSize),0) AS 'storeSpace'
                    , 8192000 - ifnull(SUM(fileSize),0) AS 'storeResidueSpace'
                FROM tbl_person_space
            ) t
        </insert>

     

  • 相关阅读:
    vue 路由嵌套 (子路由跳转报错或者失效解决方法)
    vue-cli3主题色系统
    vue项目哀悼日
    el-upload 文件上传显示进度
    课表
    uni-app 开发钉钉小程序
    Linux/Centos/Ubuntu crontab备份数据库
    【转】鲁迅为厦大题写校名,为啥4个字错了3个?专家:鲁迅故意写错的。
    计数单位资料汇总(个十百千兆京...,分厘毫丝忽微纤沙尘埃...)
    【转】如意算盘:中国的第五大发明
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/8379610.html
Copyright © 2011-2022 走看看