sql >> Database teknologi >  >> RDS >> Oracle

Oracle får DISTINCT numerisk med en CLOB i forespørgslen

Hvis du hash cloben, kan du bruge den i en underforespørgsel til at få fat i den maksimale rækkevidde for hver eventtid_nbr med den samme clob-hashværdi. Så filtrerer du bare din relation_two-tabel i where-sætningen.

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);

De 3 i den HASH specificerede SHA, men du kan også bruge MD4 (1) eller MD5 (2), hvis du vil.

Jeg tænker, at dette kan være meget langsomt, hvis du har mange rækker i RELATION_TWO-tabellen, og jeg er sikker på, at dette kan skrives til at fungere bedre, men konceptet er sundt.




  1. SQL-opdateringsforespørgselssyntaks med indre joinforbindelse

  2. (Android) Find stien /Android i internt lager

  3. Live søgning med PHP AJAX og XML

  4. MySQL rækkefølge efter kategori og underkategori