1

"CID","NAME","EMAIL","LOC" 是两个表的属性

创建视图 TEST_V 为

从表 1 中选择 *

联盟

从表2中选择*;


插入 TEST_ERROR(Source_Rowid、Source_Table、Filter_Id、Date_Time、Action)

选择 ROWID, 'TEST_V', 100, sysdate,'Request Admin'

来自 TEST_V

其中 LOC =(从位置选择 CityList);

Location 是另一个表,其中定义了 CityList,我想将 CityList 与 LOC 匹配,然后添加行。

我得到的错误是:

SQL 错误:ORA-01446:无法从具有 DISTINCT、GROUP BY 等的视图中选择 ROWID 或对其进行采样。01446. 00000 -“无法从具有 DISTINCT、GROUP BY 等的视图中选择或采样 ROWID。”

4

2 回答 2

0

如果您需要视图基表的 ROWID,请执行以下操作:

Create View TEST_V As
Select Table1.*, rowid as row_id From Table1
Union all
Select Table2.*, rowid as row_id From Table2;

然后:

Insert Into TEST_ERROR (Source_Rowid, Source_Table, Filter_Id, Date_Time, Action)
Select ROW_ID, 'TEST_V', 100, sysdate,'Request Admin'
From TEST_V
Where LOC in (Select CityList From Location);
于 2012-05-23T10:29:08.530 回答
0

在这个查询中( loc= select citylist from location )一次选择了这么多城市,所以这些城市不能同时适合 loc 这为什么它会给出错误所以试试这个( loc =(从 citylist= 的位置选择城市列表) '作为你表中一个城市的名称'))我认为它会起作用

于 2012-05-23T13:34:39.070 回答