我正在尝试对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_%'
)
这可能吗?
谢谢!
答案 0 :(得分:0)
这是一个糟糕的设计。您可以创建动态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;