sql >> Database >  >> RDS >> Oracle

Hoe kan ik een SELECT DISTINCT uitvoeren op alle velden behalve een BLOB?

SELECT DISTINCT MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS
FROM [...]

Distinct wordt toegepast op alle kolommen uit de SELECT-lijst. En ja, je kunt geen LOB's gebruiken in GROUP BY, UNION, DISTINCT enz. omdat Oracle niet weet hoe verschillende LOB's moeten worden vergeleken

Als je ook BLOB wilt ophalen, kun je zoiets als dit proberen:

SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
       PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE
FROM (     
  SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
         PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE,
         row_number() over (partition by MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS 
                            order by PROJECTION.DAY, TIME_SLOTS.SLOT) RW
  FROM [...]
) WHERE RW = 1;  

Maar je moet begrijpen waar je naar op zoek bent. De bovenstaande query groepeert bijvoorbeeld alle kolommen behalve een BLOB-kolom, rangschik ze op ongeveer twee kolommen en wijs een rijnummer toe aan elke rij in de groep. De resulterende zoekopdracht haalt alleen de eerste rij in elke groep op




  1. Netwerkbelasting testen met iPerf

  2. Hoe een door de gebruiker gedefinieerde recordgegevenstypevariabele in Oracle Database te maken?

  3. MySQL met Node.js

  4. java - array doorgeven in oracle opgeslagen procedure