gpt4 book ai didi

sql - 是否可以从多个表中进行选择,并将其名称作为子查询的结果?

转载 作者:行者123 更新时间:2023-12-04 22:01:27 25 4
gpt4 key购买 nike

我有一些结构相同的表,我想在其中的一组表中进行选择。

我想在主查询的 FROM 之后放置一个子查询,而不是对所有这些表进行循环。

有可能还是会失败?

谢谢!

(使用甲骨文)

附加信息:我没有立即知道表的名称!它们存储在另一个表中。是否可以在主查询的 FROM 之后放置一个子查询?

最佳答案

"I don't have the name of the table right away! They're stored in another table"



Oracle 在 SQL 中不会做这种事情。您将需要使用 PL/SQL 并组合一个动态查询。
create or replace function get_dynamic_rows
return sys_refcursor
is
stmt varchar2(32767) := null;
return_value sys_refcursor;
begin
for r in ( select table_name from your_table )
loop
if stmt is not null then
stmt := stmt||' union all ';
end if;
stmt := stmt||'select * from '||r.table_name;
end loop;
open return_value for stmt;
return return_value;

end;
/

这将组合一个这样的查询
select * from table_1 union all select * from table_2

UNION ALL 是一个集合运算符,它将多个查询的输出组合在一个结果集中,而不删除重复项。每个查询中的列必须在编号和数据类型上匹配。

因为生成的语句将自动执行,所以格式化它没有真正的值(value)(除非查询的实际位更复杂并且您可能需要调试它)。

Ref Cursors 是相当于 JDBC 或 .Net ResultSets 的 PL/SQL 结构。 Find out more

关于sql - 是否可以从多个表中进行选择,并将其名称作为子查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3148901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com