sql >> Databáze >  >> RDS >> Oracle

Jak mohu provést SELECT DISTINCT na všech polích kromě BLOB?

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

Distinct se použije na všechny sloupce ze seznamu SELECT. A ano, nemůžete použít LOB v GROUP BY, UNION, DISTINCT atd., protože Oracle neví, jak porovnávat různé LOBy

Pokud chcete načíst také BLOB, můžete zkusit něco takového:

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;  

Ale měli byste pochopit, co hledáte. Například výše uvedený dotaz seskupí všechny sloupce kromě sloupce BLOB, seřadí je podle dvou sloupců a každému řádku ve skupině přiřadí číslo řádku. Výsledný dotaz načte pouze první řádek v každé skupině




  1. Jaký je nejlepší způsob ukládání souřadnic (zeměpisná délka/šířka, z Map Google) na serveru SQL?

  2. mysqli::query():Nelze načíst mysqli

  3. Úvod do datových typů MySQL

  4. Rozdělení nových ovladačů ODBC a OLEDB pro Microsoft SQL Server