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

Sự cố tò mò với Oracle UNION và ORDER BY

Điều này không thực sự trả lời câu hỏi, nhưng nó có vẻ là một lỗi phân tích cú pháp (hoặc 'tính năng') hơn là một yêu cầu về ngôn ngữ.

Theo Bộ phận hỗ trợ Oracle của tôi, điều này dường như đã được nâng lên thành lỗi 14196463 nhưng bị đóng lại mà không có giải pháp nào. Nó cũng được đề cập trong chuỗi cộng đồng 3561546. Mặc dù vậy, bạn cần có tài khoản MOS hoặc ít nhất là tài khoản Oracle.

Nó cũng đã được thảo luận trong một chuỗi OTN yêu cầu đăng nhập Oracle cơ bản chứ không phải tài khoản MOS, theo như tôi có thể nói. Điều đó cũng không có nhiều thông tin nhưng lặp lại các phát hiện của bạn và cũng cho thấy hành vi đã tồn tại ít nhất là 9.2.0.8 và có lẽ sớm hơn nhiều.

Tài liệu hơi mơ hồ nhưng không chỉ ra rằng đây có thể là sự cố:

Đối với các truy vấn ghép có chứa toán tử tập hợp UNION , INTERSECT , MINUS hoặc UNION ALL , ORDER BY mệnh đề phải chỉ định vị trí hoặc bí danh hơn là biểu thức rõ ràng. Ngoài ra, ORDER BY mệnh đề chỉ có thể xuất hiện trong truy vấn thành phần cuối cùng. ORDER BY mệnh đề sắp xếp tất cả các hàng được trả về bởi toàn bộ truy vấn kết hợp.

Bạn đang đặt bí danh cho biểu thức của mình và sử dụng biểu thức đó, và nó không nói rằng bạn phải đặt bí danh cho các thành phần cụ thể (mặc dù tất nhiên nó không nói rằng bạn không phải).

Hành vi này dường như không phù hợp với việc bí danh có giá trị cho phép chiếu cuối cùng và quy tắc thông thường về bí danh chỉ hợp lệ theo thứ tự từng mệnh đề - điều này dường như đang rơi vào khoảng giữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xử lý Tiết kiệm ánh sáng ban ngày trong cơ sở dữ liệu Oracle

  2. Giáng sinh đến sớm (Oracle 12.2)

  3. Oracle ORA-00979 - không phải là biểu thức GROUP BY

  4. Làm thế nào để khai báo biến và sử dụng nó trong cùng một tập lệnh SQL của Oracle?

  5. ORA-01843 không phải là tháng hợp lệ- So sánh Ngày