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>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM