Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để thực hiện CHỌN DISTINCT trên tất cả các trường ngoại trừ BLOB?

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

Phân biệt được áp dụng cho tất cả các cột từ danh sách CHỌN. Và có, bạn không thể sử dụng LOB trong GROUP BY, UNION, DISTINCT, v.v. vì Oracle không biết cách so sánh các LOB khác nhau

Nếu bạn cũng muốn truy xuất BLOB, bạn có thể thử một cái gì đó như sau:

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;  

Nhưng bạn nên hiểu những gì bạn đang tìm kiếm. Ví dụ:truy vấn ở trên nhóm tất cả các cột ngoại trừ một cột BLOB, sắp xếp chúng theo hai cột và gán một số hàng cho mỗi hàng trong nhóm. Truy vấn kết quả chỉ truy xuất hàng đầu tiên trong mỗi nhóm




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phương thức ExecuteBatch trả về mảng giá trị -2 trong java

  2. Thay đổi định nghĩa TYPE trong Oracle 21c

  3. Hàm LOG () trong Oracle

  4. lỗi:ORA-65096:tên người dùng hoặc vai trò thông thường không hợp lệ trong oracle

  5. Nhà phát triển SQL sẽ không bắt đầu