Oracle Query提取表名以及列名

时间:2013-09-09 19:32:20

标签: sql oracle

select trx_id,refernce number from
(select * from abcd_1_txt union
select * from abcd_2_txt union
select * from abcd_3_txt union
select * from abcd_4_txt)
where trx_id in (123,321,1234)

在查询中,所有表格具有相同的格式,相同的列名称和相同的列数。 运行此查询后,我肯定会得到一些数据。 我的问题---有没有办法知道从哪些表中得到输出。

1 个答案:

答案 0 :(得分:2)

尝试添加一个包含查询数量的列,如下所示

select qrynum, trx_id,refernce number from
(select 1 as qrynum,* from abcd_1_txt union
select 2,* from abcd_2_txt union
select 3,* from abcd_3_txt union
select 4,* from abcd_4_txt)
where trx_id in (123,321,1234)

正如Joe W在下面的评论中所说,您也可以使用表格的名称而不是查询号码,简短示例:

select tabname, trx_id,refernce number from
(select 'abcd_1_txt' as tabname,* from abcd_1_txt union
...
where trx_id in (123,321,1234)

但两种方式都不能消除重复,因此您可以使用union all代替union。其他方法是使用条件

单独运行quires
 select * from abcd_1_txt where trx_id in (123,321,1234)
 select * from abcd_2_txt where trx_id in (123,321,1234)
  .
  .
  .