我正在使用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 :(得分: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;