sql >> Database >  >> RDS >> Oracle

Vreemd probleem met Oracle UNION en ORDER BY

Dit is niet echt een antwoord op de vraag, maar het lijkt eerder een parserbug (of 'functie') te zijn dan een taalvereiste.

Volgens My Oracle Support lijkt dit te zijn gemeld als bug 14196463, maar is deze zonder oplossing gesloten. Het wordt ook genoemd in communitythread 3561546. Je hebt echter een MOS-account nodig, of op zijn minst een Oracle-account, om een ​​van beide te zien.

Het is ook besproken in een OTN-thread die een basis Oracle-aanmelding vereist in plaats van een MOS-account, voor zover ik weet. Dat heeft ook niet veel informatie, maar herhaalt je bevindingen, en suggereert ook dat het gedrag minstens tot 9.2.0.8 en misschien veel eerder bestond.

De documentatie is een beetje vaag, maar geeft niet aan dat dit naar verwachting een probleem zal zijn:

Voor samengestelde zoekopdrachten met set-operators UNION , INTERSECT , MINUS , of UNION ALL , de ORDER BY clausule moet posities of aliassen specificeren in plaats van expliciete uitdrukkingen. Ook de ORDER BY clausule kan alleen voorkomen in de laatste componentquery. De ORDER BY clausule ordent alle rijen die worden geretourneerd door de hele samengestelde zoekopdracht.

Je gebruikt een alias voor je uitdrukking en gebruikt die, en er staat niet dat je bepaalde componenten een alias moet geven (hoewel er natuurlijk niet staat dat je niet moet ook).

Het gedrag lijkt inconsistent met de alias die geldig is voor de uiteindelijke projectie, en de gebruikelijke regel dat de alias alleen geldig is in de volgorde van clausule - dit lijkt ergens tussenin te vallen.



  1. PostgreSQL-reeksen zonder tussenruimte

  2. Aggregatie van Oracle-tekenreeksen

  3. Excel-blad converteren naar database van sqlite in Android

  4. Hoe Galera Cluster of MySQL-replicatie te herstellen van het Split Brain Syndroom?