在我的新的业务工作,我遇到了在那里的表进行编号一样的Oracle SQL - 使用中的“与as'语句和许多表
table_1,
table_2,
table_3,
...
(最多20个)的数据库结构
“UNION ALL”所有这些表具有相同的结构,如Id,Name,Surname。 现在我收到一个请求,显示所有表中名称为“John”的Id。
With query_name (Id, Name, Surname) AS (
Select ID, Name, Surname FROM table_1
UNION ALL
Select ID, Name, Surname FROM table_2
UNION ALL
Select ID, Name, Surname FROM table_3
UNION ALL
--...
--all the other tables
) SELECT * FROM query_name WHERE Name = "John"
有没有办法缩小我的查询或有此问题的另一个解决方案: 我的表,我需要选择与此很长的查询提出了量的斗争?我想到了一个循环,但我无法在“with as”语句中创建一个循环。
谢谢。
如果您需要经常这样做,会不会创建视图帮助? –
*经常更新x的物化视图。 – xQbert
表名是否相似?或者我们如何捕获你的表名来在循环/函数中调用它们? –