sql - 选择具有相同列名的多个表
问题描述
我正在尝试对 Oracle 上的几个表进行查询(所有这些表都具有相同的列)。
让我们假设 TABLE_1、TABLE_2 和 TABLE_3 上的 column1、column2 和 column3。
我想在不使用 UNION 的情况下在单个语句上执行此操作。
就像是:
SELECT column1,
column2,
column3
FROM (SELECT TABLE_NAME
FROM ALL_TABLES
WHERE TABLE_NAME LIKE 'TABLE_%'
)
这可能吗?
谢谢!
解决方案
这是一个糟糕的设计。VIEW
您可以从该视图创建动态和查询。
DECLARE
v_sql VARCHAR2(4000);
BEGIN
SELECT
LISTAGG('SELECT column1,column2,column3 FROM ' || table_name,
' UNION ALL ' || CHR(10) ) WITHIN
GROUP(
ORDER BY table_name
)
INTO v_sql
FROM all_tables
WHERE table_name LIKE '%TABLE_%';
EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW my_view AS ' || v_sql;
END;
/
Select * from my_view;
推荐阅读
- laravel - 如何在此输入字段中的表格中显示 laravel 刀片中的日期
- java - 时间戳反序列化失败并显示“无法将'java.lang.String'类型的值转换为所需的'java.time.Instant'类型”
- reactjs - 编写一个与构造函数具有相同默认值的函数
- c++ - 具有常量模板的静态多态性
- mysql - 错误:Windows 10 的 mysqlclient 构建轮失败
- excel - 否则无法在 VBA EXCEL 中的“If Then Else”中工作
- java - -XX:MaxPermSize 设置未反映
- extjs - 如何在 extjs3 中创建动态菜单?
- algorithm - 找到最大分数满足约束的子集
- python - 合并数据框中的行