Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Masalah penasaran dengan Oracle UNION dan ORDER BY

Ini tidak benar-benar menjawab pertanyaan, tetapi tampaknya merupakan bug parser (atau 'fitur') daripada persyaratan bahasa.

Menurut Dukungan Oracle Saya, ini tampaknya telah diangkat sebagai bug 14196463 tetapi ditutup tanpa resolusi. Itu juga disebutkan di utas komunitas 3561546. Anda memerlukan akun MOS, atau setidaknya akun Oracle, untuk melihat salah satunya.

Itu juga telah dibahas di utas OTN yang memerlukan login Oracle dasar daripada akun MOS, sejauh yang saya tahu. Itu juga tidak memiliki banyak informasi tetapi mengulangi temuan Anda, dan juga menunjukkan bahwa perilaku tersebut telah ada setidaknya hingga 9.2.0.8 dan mungkin jauh lebih awal.

Dokumentasinya agak kabur tetapi tidak menunjukkan bahwa ini diperkirakan menjadi masalah:

Untuk kueri gabungan yang berisi operator yang ditetapkan UNION , INTERSECT , MINUS , atau UNION ALL , ORDER BY klausa harus menentukan posisi atau alias daripada ekspresi eksplisit. Juga, ORDER BY klausa hanya dapat muncul di kueri komponen terakhir. ORDER BY klausa memerintahkan semua baris yang dikembalikan oleh seluruh kueri gabungan.

Anda membuat alias ekspresi Anda dan menggunakannya, dan itu tidak berarti Anda harus membuat alias komponen tertentu (walaupun tentu saja tidak berarti Anda tidak harus juga).

Perilaku tersebut tampaknya tidak konsisten dengan alias yang valid untuk proyeksi akhir, dan aturan biasa tentang alias hanya valid dalam urutan demi klausa - ini tampaknya jatuh di antara keduanya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pivot dinamis di Oracle sql

  2. penggunaan fungsi rownum dengan> masuk ke oracle

  3. secara terprogram memeriksa koneksi terbuka di JDBC

  4. Memberikan Hak atas Prosedur Tersimpan kepada pengguna Oracle lainnya

  5. Jalankan SQL dari file batch