首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 全局臨時表與 MINUS 集合運算實戰:找出無效網站編號

     編輯:Oracle 資料庫基礎

場景

給定一組網站編號列表,需查出文章詳情表 (ARTICLE_DETAIL) 中**不存在**或**數據為空**的編號。

實現步驟

  1. 創建會話級全局臨時表,提交保留數據:
    CREATE GLOBAL TEMPORARY TABLE YKY_WEBSITE_NO (
      WEBSITE_NO VARCHAR2(10)
    ) ON COMMIT PRESERVE ROWS;
  2. 批量插入待檢驗編號(示例 30+ 個)。
  3. 使用 MINUS 集合運算對比:
    SELECT WEBSITE_NO FROM YKY_WEBSITE_NO
    MINUS
    SELECT WEBSITE_NO FROM ARTICLE_DETAIL
    WHERE WEBSITE_NO IN ('FM37','FM38',...,'BG12')
    GROUP BY WEBSITE_NO HAVING COUNT(*) > 0
    ORDER BY WEBSITE_NO;
    • 第一查詢:臨時表全部編號。
    • 第二查詢:文章表中**實際有數據**的編號(HAVING COUNT(*)>0 排除空分組)。
    • MINUS 返回僅存在於第一集合的編號,即「打不開/無數據」的網站。

關鍵點

  • ON COMMIT PRESERVE ROWS 確保事務提交後臨時表數據保留,便於後續查詢。
  • MINUS 自動去重並比較全行,要求兩查詢列結構一致。
  • 此模式適用於「基準集合減去實際集合」的差集分析場景。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved