MYSQL 存储 while 统计每个表
发布日期:2022-03-29 14:04:59 浏览次数:30 分类:博客文章

本文共 1005 字,大约阅读时间需要 3 分钟。

 

群里一朋友,有一需求就是获取数据库每个表的总计(条数) 思路:动态传入表名, count(1) -- 1.执行这句。获取所有表名Create table temp_tb (select t.table_name,@rownum:=@rownum+1  as numfrom information_schema.tables t,(select @rownum:=0 ) bwhere t.table_schema='test' and table_name not in ('temp','temp_tb'));-- 2.同理获取表结构,把要统计的结果跟对应的表名放在这个表里面Create table temp (select t.table_name,@rownum:=@rownum+1  as numfrom information_schema.tables t,(select @rownum:=0 ) bwhere t.table_schema='test' and table_name not in ('temp','temp_tb'));-- 3.删除表数据保留表结构delete from temp;-- 4.创建存储
-- 4.创建存储create PROCEDURE WhileLoopProc()BEGINselect @num :=1,@len :=count(1) from temp_tb;while @num<@len doselect @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;
完事!

转载地址:https://www.cnblogs.com/1-Admin/p/9068235.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:MySql 索引 查询 优化
下一篇:spring security demo

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月17日 19时36分06秒