MySQL loop through tables
Try this:
delimiter //
drop procedure if exists hunt //
create procedure hunt()
begin
DECLARE done BOOL default false;
DECLARE tablename CHAR(255);
DECLARE cur1 cursor for SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = "wholesale_production" and COLUMN_NAME LIKE "%first%" ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur1;
myloop: loop
fetch cur1 into tablename;
if done then
leave myloop;
end if;
set @sql = CONCAT('select * from `wholesale_production`.', tablename, ' where created_at >= ''2012-10-01''');
prepare stmt from @sql;
execute stmt;
drop prepare stmt;
end loop;
close cur1;
end //
delimiter ;
call hunt();
table_name is a reserved token use another variable name in "DECLARE table_name CHAR(255);"
a little edit of the above to itertate ahtoug all the tables and select them.
delimiter //
drop procedure if exists hunt //
create procedure hunt()
begin
DECLARE done int default false;
DECLARE table_name CHAR(255);
DECLARE cur1 cursor for SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema ='mbu4u';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur1;
myloop: loop
fetch cur1 into table_name;
if done then
leave myloop;
end if;
set @sql = CONCAT('select * from `mbu4u`.',table_name);
prepare stmt from @sql;
execute stmt;
drop prepare stmt;
end loop;
close cur1;
end //
delimiter //