ORA-01446-无法从具有DISTINCT,GROUP BY等的视图中选择ROWID

Mig*_*iro 5 sql oracle views ora-01446

我创建了一个在select子句中具有唯一性的视图。

当我尝试使用“从视图中选择*”选择所有记录时,出现以下错误:

ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.
Run Code Online (Sandbox Code Playgroud)

我正在搜索为什么会发生这种情况并得出以下结论:

您试图创建一个视图,该视图在SELECT语句以及子句(例如DISTINCT或GROUP BY)中包含ROWID。这是不允许的。参考

这很尴尬,因为视图中的select元素不会选择rowid,并且也未在其他任何子句(where,order等)中使用它。

有什么想法吗?

更新资料

我无法发布查询本身,但我发布的外观类似。这里是:

SELECT DISTINCT t1.c1 TABLE1_C1,
t1.c2 TABLE1_C2,
t1.c3 TABLE1_C3,
t1.c4 TABLE1_C4,
t1.c4 TABLE1_C4,
t1.c5 TABLE1_C5,
t1.c6 TABLE1_C6,
t1.c7 TABLE1_C7,
t1.c8 TABLE1_C8,
t2.c1 TABLE2_C1,
t2.c2 TABLE2_C2,
t2.c3 TABLE2_C3,
t2.c4 TABLE2_C4,
t2.c5 TABLE2_C5,
t3.c1 TABLE3_C1,
t2.c6 TABLE2_C6,
t4.c1 TABLE4_C1,
t4.c2 TABLE4_C2,
t4.c3 TABLE4_C3
  FROM table1 t1
  LEFT JOIN table2 t2
  ON t1.c1 = t2.c7
  left JOIN table4 t4
  ON t4.c4 = t2.c1
  LEFT JOIN table3 t3
  ON (t2.c1 = t3.c2
  AND t2.c8 = t3.c3
  AND t2.c9 = t3.c4)
  WHERE (t2.cp5  = 0 or t2.cp5 is null)
  AND (t2.c3  =
    (SELECT MAX(c3)
    FROM table2 s_t2
    WHERE s_t2.c3 LIKE t2.c3
    AND s_t2.c7 = t1.c1
    ) or t2.c3 is null)
Run Code Online (Sandbox Code Playgroud)

ste*_*eve 2

如果使用不同的或按多行分组可以限定条件。因此,不同的执行将返回不同的行 ID,另一个问题是,如果几行符合您将返回哪一行?

这根本没有道理