如何将所有表格和字段组合在一起?

时间:2015-11-18 20:52:54

标签: sql oracle

我正在使用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方面不是很有经验

1 个答案:

答案 0 :(得分: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;