sql >> Databasteknik >  >> RDS >> Oracle

Oracle får DISTINKT numerisk med en CLOB i frågan

Om du hashar cloben kan du använda den i en underfråga för att ta tag i max radvid för varje eventtid_nbr med samma clob-hashvärde. Sedan filtrerar du bara din relation_two-tabell i where-satsen.

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:an i den HASH-specificerade SHA:n, men du kan också använda MD4 (1) eller MD5 (2) om du vill.

Jag tror att det här kan vara väldigt långsamt om du har många rader i tabellen RELATION_TWO och jag är säker på att detta kan skrivas för att prestera bättre, men konceptet är sunt.




  1. Lokal tillfällig tabell i Oracle 10 (för omfattningen av lagrad procedur)

  2. Gå med mig för en Microsoft Access med SQL Server Academy-session

  3. Hur får man PostgreSQL att infoga en rad i en tabell när den tas bort från en annan tabell?

  4. Motsvarighet till GroupBy och Having-klausulen i Relational Algebra