首先我的问题是要查很多张表差不多快2万张,是个日志表,表的结构和字段都是一样的,查询的语句倒是很简单,因为要查的表太多我想用存储过程写个调度,表名是需要自己查出来的,而且没有什么特别的规律,所以我想建个数组存这些表,然后再循环调用,但是在网上找了半天没见到合适列子,望大神给看看有什么好的建议这个是我要查的表
下面是查每张表的最后一条数据,实际我想就是想看每张表里varchar1和varchar2的数据是否一致,大神们有什么其他的好的建议也可以的

解决方案 »

  1.   


    可以用动态语句,只要表的结构都一样,而只是表的名称不同,就可以写个存储过程,里面用动态语句来实现的,每次用一个表名够成一个sql,然后执行就可以了
      

  2.   

    [quote=引用 1 楼 zjcxc 的回复
    这就很尴尬了,我标签里都有写,用肯定知道要用,关键是不知道怎么用,以前只写过一个简单的游标,来这问就是希望有个详细点的回答
      

  3.   

    自己改,查表列表的列成你自己的,游标中执行的 SQL 语句换成你自己的
    use db1;
    delimiter $$
    create procedure p()
    begin
    declare _v_Table varchar(100);
        declare _v_cur boolean default true;
    declare cur cursor for
        select concat(table_schema, '.', table_name)
        from information_schema.tables
        where table_schema='mysql' limit 10;
        declare exit handler for not found set _v_cur=false;
        open cur;
        while _v_cur do
    fetch cur into _v_table;
            set @sql=concat('select count(*) from ', _v_table);
            prepare st from @sql;
            execute st;
            deallocate prepare st;
        end while;
        close cur;
    end$$
    delimiter ;
    call p();
    drop procedure if exists p;