首頁 > 資料庫 > mysql教程 > 如何在排除特定日期的情況下選擇前 10 筆 Oracle 記錄?

如何在排除特定日期的情況下選擇前 10 筆 Oracle 記錄?

Mary-Kate Olsen
發布: 2025-01-18 15:36:10
原創
307 人瀏覽過

How to Select the Top 10 Oracle Records While Excluding Specific Dates?

Oracle 前 10 筆記錄選擇(含日期排除)

本文解決了常見的 Oracle 資料庫挑戰:檢索按特定列排序的前 10 筆記錄,同時從另一個表中排除與特定條件相符的記錄。 由於這些元素的相互作用,帶有 SELECT DISTINCTORDER BY 子句的簡單 ROWNUM 是不夠的。

此解決方案利用子查詢來實現所需的結果:

<code class="language-sql">SELECT *
FROM (
  SELECT DISTINCT 
  APP_ID, 
  NAME, 
  STORAGE_GB, 
  HISTORY_CREATED, 
  TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY 
  WHERE 
    STORAGE_GB IS NOT NULL 
    AND NOT EXISTS (
      SELECT 1
      FROM HISTORY h2
      WHERE 
        h2.APP_ID = HISTORY.APP_ID
        AND TO_CHAR(h2.HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009'
    )
  ORDER BY STORAGE_GB DESC
)
WHERE 
  ROWNUM <= 10;</code>
登入後複製

此方法首先過濾內部查詢中的 HISTORY 表。 NOT EXISTS 子句有效地排除 APP_IDHISTORY_DATE 等於「06.02.2009」的記錄相符的記錄。 然後結果按 STORAGE_GB 排序(降序)。外部查詢套用 ROWNUM <= 10 約束,確保僅傳回前 10 筆記錄。 此方法在過濾和排序之後正確應用行限制,保證準確的結果。

注意:對於此類排除,

通常比 NOT EXISTS 提供更好的效能,特別是對於大型資料集。 請查閱 Oracle 文件以了解進一步的效能最佳化策略。 NOT IN

以上是如何在排除特定日期的情況下選擇前 10 筆 Oracle 記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板