2015-11-18 35 views
0

我正在使用Oracle數據庫,並且SQL有問題。我想訪問數據庫中的所有表,返回表名和每個表的已知列的最小值。如何將所有表格和字段放在一起?

我已經試過這樣的事情:

SELECT TABLE_NAME 
FROM ALL_TABLES 
WHERE TABLESPACE_NAME = 'MyOwnDB' 

SELECT min(tb.MyColumn) 
FROM anyOfMyTables tb 

都工作得不錯,但我怎麼可能把這些查詢一起想:

SELECT TABLE_NAME, min(tb.MyColumn) 
FROM ... 

我SQL不是很有經驗

回答

0

您不能在單個SQL語句中執行此操作,但可以使用PL/SQL執行此操作。

1)如果所有的表有一欄叫MYCOLUMN(不太可能):

declare 
    l_minval date; 
begin 
    for r in 
    (select table_name, owner 
     from all_tables 
     where ... 
    ) 
    loop 
    execute immediate 'select min(mycolumn) from '||r.owner||'.'||r.table_name 
     into l_minval; 
    dbms_output.put_line(r.table_name||' '||l_minval); 
    end loop; 
end; 

2)如果不是所有的表有一欄叫MYCOLUMN(很可能):

declare 
    l_minval date; 
begin 
    for r in 
    (select table_name, owner 
     from all_tab_columns 
     where column_name = 'MYCOLUMN' 
     and ... 
    ) 
    loop 
    execute immediate 'select min(mycolumn) from '||r.owner||'.'||r.table_name 
     into l_minval; 
    dbms_output.put_line(r.table_name||' '||l_minval); 
    end loop; 
end; 
+0

我想你需要將所有者名稱添加到table_name,因爲查詢從'all_tables'中選擇數據 – are

+0

這不適用於我的機器 – user5497819

+0

min()函數應返回日期 – user5497819

相關問題