2

このクエリを実行しようとしていますが、ゼロ行が返されます。なぜ手がかりはありますか?

Select distinct a.id
from  table1 a, table b
where  ( a.id= b.id or a.id = b.secondid ) and rownum < 200;

しかし、ROWNUM句を指定せずに上記のクエリを実行すると、レコードが見つかります。

Select distinct a.id
from  table1 a, table b
where  ( a.id= b.id or a.id = b.secondid );

最初のクエリが機能しない理由がわかりません。

4

3 に答える 3

3

Oracle がどの行を返すかを判断したROWNUM に適用する必要があります。唯一の信頼できる方法は次のとおりです。

SELECT * FROM (
  Select distinct a.id
  from  table1 a, table b
  where  ( a.id= b.id or a.id = b.secondid )
) WHERE ROWNUM < 200;
于 2013-03-23T18:18:08.163 に答える
-1

「and rownum < 200」を「WHERE rownum < 200」に変更

于 2013-03-23T18:04:19.293 に答える