我有一組名爲results_%的表,所有表都具有相同的結構。執行查詢結果語句
我想爲這個表添加一個索引。
我可以爲每個表的選擇查詢結果的行ALTER語句,但我不知道如何執行這個語句:
select concat('alter table ', test_db.table_name, ' add index `did` (`did`);') as statement
from information_schema.tables test_db
where test_db.table_name like 'results_%';
我缺少什麼?
的輸出中(我想執行的,而不是僅僅把它展示給我):
+---------------------------------------------------------+
| statement |
+---------------------------------------------------------+
| alter table results_Em7777_spa add index `did` (`did`); |
| alter table results_KaEng_eng add index `did` (`did`); |
| alter table results_Ka_spa add index `did` (`did`); |
| alter table results_Mc_spa add index `did` (`did`); |
| alter table results_Mo_eng add index `did` (`did`); |
| alter table results_Pe_eng add index `did` (`did`); |
| alter table results_SU_spa add index `did` (`did`); |
| alter table results_Ta_spa add index `did` (`did`); |
| alter table results_ba_eng add index `did` (`did`); |
| alter table results_br_eng add index `did` (`did`); |
| alter table results_ca_spa add index `did` (`did`); |
| alter table results_ch_spa add index `did` (`did`); |
| alter table results_da_spa add index `did` (`did`); |
| alter table results_ga_eng add index `did` (`did`); |
| alter table results_ge_spa add index `did` (`did`); |
| alter table results_gk_eng add index `did` (`did`); |
+---------------------------------------------------------+
16 rows in set (0.00 sec)
[編輯]
我想:
drop procedure if exists altlike;
delimiter //
create procedure altlike()
begin
set group_concat_max_len = 65535;
select @altrlk:= concat('alter table ', test_db.table_name , ' add index `did` (`did`);')
from information_schema.tables test_db
where test_db.table_name like "results_%";
prepare statement from @altrlk;
execute statement;
end //
delimiter ;
call altlike();
,但仍沒有運氣:它只會改變最後匹配的表格(results_gk_eng)。
你可以嘗試準備/執行:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html – zerkms 2012-03-31 12:16:04
我還以爲會是想法,但在閱讀文檔後,我仍然無法弄清楚如何使用它們。 – NotGaeL 2012-03-31 12:29:59
有什麼問題?編寫一個迭代結果集並逐行執行的程序 – zerkms 2012-03-31 12:32:05