Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да извърша SELECT DISTINCT за всички полета с изключение на BLOB?

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

Distinct се прилага към всички колони от списъка SELECT. И да, не можете да използвате LOB в GROUP BY, UNION, DISTINCT и т.н., защото Oracle не знае как да сравнява различни LOB

Ако искате да извлечете и BLOB, можете да опитате нещо подобно:

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;  

Но трябва да разберете какво търсите. Например, заявката по-горе групира всички колони с изключение на колона BLOB, подрежда ги по две колони и присвоява номер на ред на всеки ред в групата. Получената заявка извлича само първия ред във всяка група




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-65139:Несъответствие между XML файл с метаданни и файл с данни

  2. Предаване на масив от данни като входен параметър към процедура на Oracle

  3. Как да премахнете „Избрани X редове“ в SQLcl &SQL*Plus (Oracle)

  4. Oracle PL/SQL:Експортиране на данни от таблица в CSV

  5. Автоматично генериране на файл с отговори