MYSQL 存储 while
Posted zhouixi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
完事!
以上是关于MYSQL 存储 while的主要内容,如果未能解决你的问题,请参考以下文章
MySQL While取出汉字字符串首字母存储过程(不区分多音字)