本文主要給大家簡(jiǎn)單講講MySQL如何操作相同類型多張表提取到一張表,相關(guān)專業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書(shū)籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望mysql如何操作相同類型多張表提取到一張表這篇文章可以給大家?guī)?lái)一些實(shí)際幫助。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),博望企業(yè)網(wǎng)站建設(shè),博望品牌網(wǎng)站建設(shè),網(wǎng)站定制,博望網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,博望網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
有時(shí)候需要從多張相同類型的表中提取數(shù)據(jù),這些表有一些相同的列或者表結(jié)構(gòu)完全相同,同時(shí)表名存在一定的規(guī)律,如果表數(shù)量少還好,如果表數(shù)量多的話則會(huì)比較繁瑣??梢酝ㄟ^(guò)存儲(chǔ)過(guò)程將多張表的數(shù)據(jù)提取到一張表的方法來(lái)降低工作量。
先創(chuàng)建測(cè)試表并生成測(cè)試數(shù)據(jù)。
以下存儲(chǔ)過(guò)程創(chuàng)建10張測(cè)試表,每張表生成10條測(cè)試數(shù)據(jù)。
drop PROCEDURE if EXISTS create10tables;
create PROCEDURE create10tables()
BEGIN
DECLARE t_name VARCHAR(32);
DECLARE i INT;
DECLARE j INT;
DECLARE continue HANDLER for not found set t_name = "";
set i = 0;
set j = 0;
create_loop:LOOP
set i = i + 1;
set t_name = CONCAT("ttest",i);
set @dropsql = CONCAT('drop table if EXISTS ',t_name);
#select @dropsql;
prepare dropsql from @dropsql;
EXECUTE dropsql;
DEALLOCATE prepare dropsql;
set @createsql = concat('create table ',t_name,' (id int(11) not null auto_increment,modifytime timestamp null default current_timestamp,vdata varchar(32) ,primary key(id));');
#select @createsql;
prepare createsql from @createsql;
EXECUTE createsql;
DEALLOCATE prepare createsql;
insert_loop:LOOP
set j = j+1;
if j > 10 THEN
LEAVE insert_loop;
end if;
set @insertsql = concat('insert into ',t_name,'(vdata) values(md5(rand()));');
#select @insertsql;
PREPARE insertsql from @insertsql;
EXECUTE insertsql;
deallocate PREPARE insertsql;
end LOOP insert_loop;
set j = 0;
if i > 10 THEN
LEAVE create_loop;
end if;
end LOOP create_loop;
END;
#執(zhí)行create10tables 生成表與數(shù)據(jù)
call create10tables();
有了表和數(shù)據(jù),可以在information_schema數(shù)據(jù)庫(kù)的innodb_tables表中看到新生成的對(duì)應(yīng)的表名。這里可以通過(guò)該表將所有的表名查出來(lái),然后進(jìn)行數(shù)據(jù)提取。SQL如下:
drop PROCEDURE if exists selectalldata;
drop table if exists t_test;
create PROCEDURE selectalldata()
BEGIN
DECLARE done int DEFAULT FALSE;
DECLARE t_name VARCHAR(32);
declare i int;
DECLARE cur1 CURSOR for SELECT table_name from information_schema.TABLES where table_name like "ttest%";
DECLARE continue HANDLER for not found set done = TRUE;
open cur1;
set i = 0;
read_loop:LOOP
fetch cur1 into t_name;
if done THEN
LEAVE read_loop;
end if;
if i = 0 THEN
set @createsql = concat('create table t_test (id int(11) not null auto_increment,modifytime timestamp null default current_timestamp,vdata varchar(32) ,primary key(id));');
#select @createsql;
prepare createsql from @createsql;
EXECUTE createsql;
DEALLOCATE prepare createsql;
set i = i + 1;
end if;
set @insertsql = concat('insert into t_test(modifytime,vdata) select modifytime,vdata from ',t_name);
prepare insertsql from @insertsql;
EXECUTE insertsql;
DEALLOCATE prepare insertsql;
end LOOP;
close cur1;
END;
#執(zhí)行selectdata
call selectalldata();
執(zhí)行之后可以在t_test表中看到已經(jīng)將所有的數(shù)據(jù)都提取出來(lái)了。
實(shí)際操作中,根據(jù)需要修改對(duì)應(yīng)的SQL語(yǔ)句即可。
mysql如何操作相同類型多張表提取到一張表就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。
當(dāng)前標(biāo)題:mysql如何操作相同類型多張表提取到一張表
URL分享:http://www.rwnh.cn/article24/jdjeje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)建站、域名注冊(cè)、微信公眾號(hào)、自適應(yīng)網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)