Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle mendapatkan numerik DISTINCT dengan CLOB dalam kueri

Jika Anda hash clob, Anda dapat menggunakannya dalam subquery untuk mengambil max rowid untuk setiap eventid_nbr dengan nilai hash clob yang sama. Kemudian Anda tinggal memfilter tabel relation_two Anda di klausa 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 di SHA yang ditentukan HASH, tetapi Anda juga dapat menggunakan MD4 (1) atau MD5 (2) jika Anda mau.

Saya pikir ini bisa sangat lambat jika Anda memiliki banyak baris di tabel RELATION_TWO dan saya yakin ini dapat ditulis untuk berkinerja lebih baik, tetapi konsepnya bagus.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Antrian Lanjutan Oracle dengan .Net

  2. Pilih Kumpulkan Massal ke Contoh Oracle

  3. Beberapa database dengan model yang sedikit berubah. Bagaimana cara mengizinkan Entity Framework untuk menghapus kolom saat run-time?

  4. bagaimana cara menggunakan xmltable di oracle?

  5. RU atau RU?