簡體   English   中英

如何使用SQL查詢在具有相似名稱的數據庫中加入一組表?

[英]How to JOIN a group of tables in a database with similar name using SQL query?

例如,我有一個名為db的數據庫,其中有100個表分別名為ta_1 ... ta_100 每個表都有兩列id(int)val(int)

  1. 如果我想獲得val的整體平均值,我該怎么辦?
  2. 如果我想得到一個表,結果有兩列:tablename(String)和mean(float),我該怎么辦?

不言而喻,您不應該以這種方式設置數據庫。 有許多解決方案,從簡單但平凡到堅硬但有用。

在某些時候,您必須創建一個表列表,並准備一個將它們合並在一起的語句。 使用數據庫視圖復制和過去將是一個良好的開端:

create view GlobalView (
    tabname varchar(10),
    id int,
    val int)
as
   select 'ta_1', id, val from ta_1
UNION ALL
   select 'ta_2', id, val from ta_2
UNION ALL
   select 'ta_3', id, val from ta_3
UNION ALL
   .....
UNION ALL
   select 'ta_100', id, val from ta_100

然后,您只需運行選擇:

select avg(1.0 * val) as mean
from GlobalView

另一種方法是創建一個動態查詢,您可以從外部程序調用,也可以使用“動態SQL”調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM