zoukankan      html  css  js  c++  java
  • MYSQL 存储 while 统计每个表

    群里一朋友,有一需求就是获取数据库每个表的总计(条数)
    思路:动态传入表名, count(1)

    --
    1.执行这句。获取所有表名 Create table temp_tb (select t.table_name,@rownum:=@rownum+1 as num from information_schema.tables t,(select @rownum:=0 ) b where t.table_schema='test' and table_name not in ('temp','temp_tb')); -- 2.同理获取表结构,把要统计的结果跟对应的表名放在这个表里面 Create table temp (select t.table_name,@rownum:=@rownum+1 as num from information_schema.tables t,(select @rownum:=0 ) b where t.table_schema='test' and table_name not in ('temp','temp_tb')); -- 3.删除表数据保留表结构 delete from temp; -- 4.创建存储
    -- 4.创建存储
    create PROCEDURE WhileLoopProc()
    BEGIN
    select @num :=1,@len :=count(1) from temp_tb;
    while @num<@len do
    select @name :=table_name from temp_tb where num =@num;
    set @rownum := concat('select count(1)',' as ',@name ,' into  @temp from ', @name);   
    set @num:=@num+1;
    prepare stmt from @rownum;   
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt ;
    insert into temp(table_name,num) values(@name,@temp); -- 把执行出来的结果保存到结果表中
     end while;
    end;
    -- 5.执行存储 
    call WhileLoopProc;
    -- 6.查询结果
    select * from temp;
    完事!


  • 相关阅读:
    bzoj1027 状压dp
    CodeForces755F 贪心 + 多重背包二进制优化
    CodeForces632E 神奇的多重背包
    POJ3662 SPFA//二分 + 双端队列最短路
    bzoj1233 单调队列优化dp
    POJ3417 LCA+树dp
    Network
    树网的核/[SDOI2011]消防
    [APIO2010]巡逻
    核心城市
  • 原文地址:https://www.cnblogs.com/1-Admin/p/9068235.html
Copyright © 2011-2022 走看看