Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle получава DISTINCT число с CLOB в заявката

Ако хеширате clob, можете да го използвате в подзаявка, за да вземете максималния rowid за всеки eventid_nbr със същата хеш стойност на clob. След това просто филтрирате вашата таблица relation_two в клаузата 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-те в HASH посочват SHA, но можете също да използвате MD4 (1) или MD5 (2), ако желаете.

Мисля, че това може да е много бавно, ако имате много редове в таблицата RELATION_TWO и съм сигурен, че това може да бъде написано, за да работи по-добре, но концепцията е стабилна.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cx_Oracle.DatabaseError:ORA-12170:TNS:Възникна изчакване на връзката

  2. Oracle REGEXP_SUBSTR | Извличане на низ между два разделителя

  3. Имам автономен тригер, но изпълнявам само веднъж в една и съща сесия

  4. Как да проследите кои таблици/изгледи/и т.н. зависят от таблица в Oracle

  5. Как мога да съхранявам байтове в Oracle Varchar2 и ASCII да се третира като текст