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

Hvordan kan jeg udføre en SELECT DISTINCT på alle felter undtagen en BLOB?

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

Distinct anvendes på alle kolonner fra SELECT-listen. Og ja, du kan ikke bruge LOB'er i GROUP BY, UNION, DISTINCT osv., fordi Oracle ikke ved, hvordan man sammenligner forskellige LOB'er

Hvis du også vil hente BLOB, kan du prøve noget som dette:

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;  

Men du skal forstå, hvad du leder efter. Forespørgslen ovenfor grupperer f.eks. alle kolonnerne undtagen en BLOB-kolonne, ordner dem efter to kolonner og tildeler et rækkenummer til hver række i gruppen. Den resulterende forespørgsel henter kun den første række i hver gruppe




  1. 5 Fordele ved proaktiv overvågning af databaseydelse

  2. Live-migreringer ved hjælp af MySQL-replikering

  3. HikariCP:Hvilke timeouts på databaseniveau skal overvejes for at indstille maxLifetime for Oracle 11g

  4. Ydeevne overraskelser og antagelser:DATEDIFF