5

select句にdistinctを持つビューを作成しました。

「select * from view」ですべてのレコードを選択しようとすると、次のエラーが発生します。

ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.

なぜこれが起こるのかを調べていて、これにたどり着きました:

SELECT ステートメントに ROWID と、DISTINCT や GROUP BY などの句を含むビューを作成しようとしました。これは許可されていません。参照

ビューの select ステートメントは行 ID を選択せず​​、他の句 (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)
4

3 に答える 3

2

複数の行で個別またはグループ化を使用すると、条件が満たされる可能性があります。したがって、実行が異なれば、異なる行 ID が返され、複数の行が条件を満たしている場合、どの行を返すかという別の質問が返されます。

これは単に意味がありません

于 2012-03-24T07:13:17.393 に答える