2016-09-30 10 views
0

私はORACLEデータベースを使用していますが、SQLクエリからランダムな行にアクセスしようとしていますが、クエリはランダムな行を取得していません。Oracle経由のランダム行のSQLクエリ

私のクエリは次のとおりです。

SELECT a.car_id, b.product_id 
FROM listing a, carProduct b 
WHERE a.car_id = b.car_id 
AND a.certified = 'TRUE' 
AND b.product_id like '%CERT' 
AND rownum = 1 
ORDER BY DBMS_RANDOM.RANDOM 
+0

*正しく動作していないことを意味しますか?* –

+0

@vkp質問を編集しました。 – Robben

答えて

3

rownumorder byを来ています。

SELECT lcp.* 
FROM (SELECT l.car_id, cp.product_id 
     FROM listing l join 
      carProduct cp 
      on l.car_id = cp.car_id 
     WHERE l.certified = 'TRUE' AND cp.product_id like '%CERT' 
     ORDER BY DBMS_RANDOM.RANDOM 
    ) lcp 
WHERE rownum = 1; 

注:

  • が適切な、明示的なJOIN構文を使用することを学ぶあなたは、サブクエリを必要としています。単純なルール:は、FROM句にカンマを使用します。
  • 表名の略語など、意味を成す表別名を使用します。
  • rownum = 1は外側のクエリに入る必要があります。
  • Oracle 12c +では、サブクエリは必要ありません。あなたはfetch first 1 row onlyを使うことができます。
+0

おかげで、これは非常に便利です!一つの質問、 'lcp。*'は何をするのですか?私はそれを検索しようとしましたが、何も見つかりませんでした。 @Robben。 – Robben

+1

。 。これは 'lcp'とラベル付けされた' from'節のサブクエリからすべての列を選択します。 –

関連する問題