鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 寫(xiě)sql腳本怎樣關(guān)聯(lián)查詢100張表?

寫(xiě)sql腳本怎樣關(guān)聯(lián)查詢100張表?

ps:是要寫(xiě)一個(gè)純sql腳本,不用java、python等程序
需要寫(xiě)一個(gè)數(shù)據(jù)庫(kù)的sql腳本并執(zhí)行,需要關(guān)聯(lián)100多張表,用uion一個(gè)個(gè)手寫(xiě)要?dú)垙U了,怎樣才能優(yōu)雅地寫(xiě)出一個(gè)關(guān)聯(lián)100張表的sql查詢語(yǔ)句呢?
需要關(guān)聯(lián)的表名為:
beijing201711
beijing201710
beijing201709
beijing201708
beijing201707
beijing201706
beijing201705
beijing201704
beijing201703
beijing201702
beijing201701
shagnhai201711
shagnhai201710
shagnhai201709
shagnhai201708
shagnhai201707
shagnhai201706
shagnhai201705
shagnhai201704
shagnhai201703
shagnhai201702
shagnhai201701
nanjing201711
nanjing201710
nanjing201709
nanjing201708
nanjing201707
nanjing201706
nanjing201705
nanjing201704
nanjing201703
nanjing201702
nanjing201701
......

回答
編輯回答
陌南塵

為什么不加一列,把這100多個(gè)表并成一個(gè)表呢?

2017年2月17日 02:34
編輯回答
莓森

從你的數(shù)據(jù)庫(kù)表名上來(lái)看,這個(gè)應(yīng)該是某些業(yè)務(wù)的流水分表,你應(yīng)當(dāng)根據(jù)你的業(yè)務(wù)邏輯創(chuàng)建查詢的時(shí)候選擇應(yīng)有的表,比如查詢北京的2017年8月的數(shù)據(jù),則select * from beijing201708 ,而不是從所有表里面where時(shí)間。

2017年1月9日 00:34
編輯回答
冷眸

寫(xiě)存儲(chǔ)過(guò)程吧,oracle和mysql都支持動(dòng)態(tài)sql

2017年7月5日 14:35
編輯回答
心夠野

創(chuàng)建一個(gè) 記錄當(dāng)前所有表名 的表,里面的字段是這100多個(gè)表名,每新建一個(gè)表就往這個(gè)表新加一行數(shù)據(jù)
這樣關(guān)聯(lián)的sql就可以使用這個(gè)表里面的數(shù)據(jù)拼出來(lái)了

2017年9月18日 16:09
編輯回答
愿如初

如果數(shù)據(jù)庫(kù)設(shè)計(jì)沒(méi)問(wèn)題的話,那就是你理解的邏輯出問(wèn)題了

2018年3月11日 17:14
編輯回答
詆毀你

巧用Excel

2018年1月30日 22:33
編輯回答
耍太極

所有需要的表存入tables_list之后使用下面的sql就可以生成一個(gè)union所有表的sql

select substring_index(group_concat("select * from `",table_name,"` union all" SEPARATOR ' '),'union all',count(1)) sql_text from tables_list;

然后使用文本編輯也是非常簡(jiǎn)單吧。。所有表列進(jìn)去,一個(gè)批量替換文本就可以了。。

2017年8月14日 05:58