sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag utföra en SELECT DISTINCT på alla fält utom en BLOB?

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

Distinkt tillämpas på alla kolumner från SELECT-listan. Och ja, du kan inte använda LOB i GROUP BY, UNION, DISTINCT etc eftersom Oracle inte vet hur man jämför olika LOBs

Om du också vill hämta BLOB kan du prova något i stil med detta:

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 borde förstå vad du letar efter. Till exempel grupperar frågan ovan alla kolumner utom en BLOB-kolumn, ordna dem efter två kolumner och tilldela ett radnummer till varje rad i gruppen. Den resulterande frågan hämtar endast den första raden i varje grupp




  1. Möjliga sätt att åtgärda problem med korruption av SQL Server-metadata

  2. En berättelse om två klustringsfaktorer

  3. Viloläge:Skapa index

  4. Förstå MySQL TRUNCATE TABLE genom praktiska exempel