对于用户(用户A)我有几个表(table1,table2,...,表n)具有相同的字段(field1,field2,field3,field4),我想知道的名称包含字段4的值x的表(其中field4 = x)
答案 0 :(得分:0)
举例来说:用户SCOTT
(标准Oracle用户/架构)有两个表EMP
和DEPT
,两个表都有一列DEPTNO
。我想在列:x
中找到哪个表(或多个表)具有值DEPTNO
。 (注意我如何允许我搜索的值是绑定变量 - 所以我可以将查询重用于不同的值。)我只对识别表名感兴趣,所以我停止搜索一旦找到值,就在每个表中。
select 'EMP' as table_name
from scott.emp
where deptno = :x and rownum = 1
union all
select 'DEPT' as table_name
from scott.dept
where deptno = :x and rownum = 1
--- etc. (union all for all tables of interest)
请注意,表格都具有相同列的事实无关紧要。每个表必须有一列可能包含值:x
(假设这一列在所有表中具有相同的数据类型)。
另请注意,运行此查询的用户必须具有SCOTT模式中表的权限(显然!)