mysql 多日誌表結果集合拼接預存程序

來源:互聯網
上載者:User

標籤:mysql union 預存程序

通常單天的日誌 只記錄當天的日誌資訊,如果需要查看一月內的日誌資訊需要對每天的日誌表結果集合進行拼接,通常用到 union 。

儲存過程:

drop PROCEDURE if  EXISTS unionSp;DELIMITER //create procedure unionSp(sTime varchar(32), eTime varchar(32),tchema varchar(32))begindeclare sqlVar varchar(1024000);declare rest int;declare tableName varchar(1024);set rest = 100;set sqlVar='';while rest > 0 do   set sTime = (select DATE_FORMAT((select ADDDATE(sTime,1)),'%Y%m%d')); set tableName=CONCAT('tbl_req_',sTime); select count(1) from information_schema.tables where table_name = tableName  and TABLE_SCHEMA=tchema into @cnt; if @cnt != 0 thenif rest=1 then set sqlVar=CONCAT(sqlVar,' SELECT DISTINCT channel_id,app_id from tbl_req_',sTime);ELSE set sqlVar=CONCAT(sqlVar,' SELECT DISTINCT channel_id,app_id from tbl_req_',sTime,' UNION');END IF;END if;set rest = DATEDIFF(eTime,sTime);END while;set @v_s=sqlVar;prepare stmt from @v_s;EXECUTE stmt;DEALLOCATE PREPARE stmt;end;// DELIMITER;call unionSp('20140730','20140930','biz_date')

union:聯合的意思,即把兩次或多次查詢結果合并起來。
 要求:兩次查詢的列數必須一致
 推薦:列的類型可以不一樣,但推薦查詢的每一列,想對應的類型以一樣
 可以來自多張表的資料:多次sql語句取出的列名可以不一致,此時以第一個sql語句的列名為準。
 如果不同的語句中取出的行,有完全相同(這裡表示的是每個列的值都相同),那麼union會將相同的行合并,最終只保留一行。也可以這樣理解,union會去掉重複的行。
如果不想去掉重複的行,可以使用union all 


mysql 多日誌表結果集合拼接預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.