【发布时间】:2010-09-21 06:42:48
【问题描述】:
遇到这样一种情况,在架构中我有一个表,比如表 ACTION ,而我也有一个名为 ACTION 的同义词,它将另一个表引用到另一个架构。
现在,当我运行查询时
从动作中选择 *
它将从表中选择记录,但不选择同义词。
无论如何让我从同义词和表格中同时选择?
感谢
【问题讨论】:
遇到这样一种情况,在架构中我有一个表,比如表 ACTION ,而我也有一个名为 ACTION 的同义词,它将另一个表引用到另一个架构。
现在,当我运行查询时
从动作中选择 *
它将从表中选择记录,但不选择同义词。
无论如何让我从同义词和表格中同时选择?
感谢
【问题讨论】:
我不认为您的 ACTION 同义词与您的 ACTION 表位于相同的架构中,因为这在 Oracle 中是不允许的。您的 ACTION 同义词很可能存在于其他模式中,也许它是 PUBLIC 同义词。如果是这种情况,您可以使用
select * from ACTION
union
select * from public.ACTION
【讨论】:
好吧,你的底层 ACTION 表应该被重命名,比方说做 LOCAL_ACTION。
让我们假设您的 ACTION 同义词在 otheruser.LOCAL_ACTION 表中...
那么你可以将ACTION同义词重新定义为:
SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION
最后,从 ACTION 中选择 * 将为您提供两个表的组合列表。
【讨论】:
表和私有同义词确实共享相同的名称空间,所以这是一个公共同义词:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
请注意,UNION 是结果集上的隐含不同值。你需要的是 UNION ALL。
select * from ACTION
union all
select * from public.ACTION
【讨论】: