Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle lấy số DISTINCT với CLOB trong truy vấn

Nếu bạn băm clob, bạn có thể sử dụng nó trong một truy vấn con để lấy rowid tối đa cho mỗi eventid_nbr có cùng giá trị băm của clob. Sau đó, bạn chỉ cần lọc bảng Relations_two của mình trong mệnh đề where.

SELECT EVENTID_NBR, INPUT_ARGS 

FROM RELATION_ONE, RELATION_TWO 

WHERE RELATION_ONE.LOGID_NBR = RELATION_TWO.LOGID_NBR AND 
  EVENTID_NBR BETWEEN 143 AND 192 AND 
  EVENTID_NBR != 172 AND SYSDATE - 7 >= RELATION_ONE.LAST_UPDATED

  AND (RELATION_TWO.EVENTID_NBR, RELATION_TWO.ROWID) IN
      (SELECT DISTINCT EVENTID_NBR,
       MAX(ROWID) OVER (PARTITION BY EVENTID_NBR, DBMS_HASH(INPUT_ARGS,3))
       FROM RELATION_TWO);

3 trong SHA được chỉ định HASH, nhưng bạn cũng có thể sử dụng MD4 (1) hoặc MD5 (2) nếu bạn muốn.

Tôi nghĩ rằng điều này có thể rất chậm nếu bạn có nhiều hàng trong bảng RELATION_TWO và tôi chắc chắn rằng điều này có thể được viết để hoạt động tốt hơn, nhưng khái niệm là âm thanh.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException:ORA-01843:lỗi tháng không hợp lệ

  2. SQL để bỏ qua các hàng có thuộc tính cụ thể từ một bảng đã nối

  3. Tệp kết xuất cốt lõi và thêm mã gỡ lỗi trong ứng dụng thực thi cho Ứng dụng Oracle

  4. Maven phụ thuộc không được giải quyết trong Eclipse

  5. Oracle 10g Blob nhỏ hoặc Clob không được lưu trữ nội tuyến?