我想从表中获取名称保存在另一个表中的数据。如下所述尝试获取此结果将导致从嵌套的SELECT
获得结果 select * from (select value from ex_scheme.ex_tab where name = 'ex_name.current_table_name')
我的意思是,我从
获得了相同的结果 select value from ex_scheme.ex_tab where name = 'ex_name.current_table_name'
查询。
已更新
好的,让我们仔细检查一下我是否被正确理解。
我必须看一个表数据(让我们调用这个表" table1")。我需要知道这个表名。我知道它的名字在哪里。它位于另一个表格中(称之为" names_table")在列"名称" (列值=' table1'的行)。我可以通过查询得到它
select name from names_table where value = 'table1'
答案 0 :(得分:0)
尝试给别名
select n.* from (select value from ex_scheme.ex_tab where name = 'ex_name.current_table_name') n;
更新
它位于“name”列中的另一个表(称为“names_table”)(行 列值='table1')。
此查询将起作用
select n.* from (select name from ex_scheme.ex_tab where name = 'ex_name.current_table_name') n;
子查询从另一个表中获取表的名称。
答案 1 :(得分:0)
如果您事先知道列及其类型,则可以构建一些动态SQL来动态查询表或其他。
例如,假设您有以下表格:
create table table1(col) as (select 1 from dual);
create table table2(col) as (select 2 from dual);
create table tab_of_tabs (tab_name) as (select 'TABLE1' from dual);
您可以使用动态SQL构建一个查询,该查询扫描名称是查询结果的表:
SQL> declare
2 vSQL varchar2(1000);
3 vResult number;
4 begin
5 select 'select sum(col) from ' || tab_name -- build the query
6 into vSQL
7 from tab_of_tabs;
8 --
9 execute immediate vSQL into vResult; -- run the query
10 --
11 dbms_output.put_line('Result: ' || vResult);
12 end;
13 /
Result: 1
PL/SQL procedure successfully completed.
SQL>
答案 2 :(得分:0)
如果我理解正确,您可以在where子句中使用嵌套查询。例如,
select * from table1 where table1.name in (select name from table2);
这假设有一个列"名称"在表1中。此查询的结果应返回table2中table1中的行。