2016-09-30 69 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

rownum具有的order 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

+1

@羅本。 。 。它從標籤爲'lcp'的'from'子句中的子查詢中選擇所有列。 –