sql >> Database teknologi >  >> RDS >> Oracle

Nysgerrig problem med Oracle UNION og ORDER BY

Dette besvarer ikke rigtigt spørgsmålet, men det ser ud til at være en parser-fejl (eller 'funktion') snarere end et sprogkrav.

Ifølge My Oracle Support lader dette til at være blevet rejst som fejl 14196463, men lukket uden opløsning. Det er også nævnt i fællesskabstråd 3561546. Du skal dog have en MOS-konto eller i det mindste en Oracle-konto for at se en af ​​dem.

Det er også blevet diskuteret i en OTN-tråd, som kræver et grundlæggende Oracle-login frem for en MOS-konto, så vidt jeg kan se. Det har heller ikke meget information, men gentager dine resultater og antyder også, at adfærden har eksisteret tilbage i det mindste til 9.2.0.8 og måske meget tidligere.

Dokumentationen er lidt vag, men indikerer ikke, at dette forventes at være et problem:

For sammensatte forespørgsler, der indeholder sæt-operatorer UNION , INTERSECT , MINUS , eller UNION ALL , ORDER BY klausul skal specificere positioner eller aliaser i stedet for eksplicitte udtryk. Også ORDER BY klausul kan kun vises i den sidste komponentforespørgsel. ORDER BY klausul bestiller alle rækker, der returneres af hele den sammensatte forespørgsel.

Du aliaserer dit udtryk og bruger det, og det siger ikke, at du skal kalde bestemte komponenter (selvom det selvfølgelig ikke siger, at du ikke skal enten).

Adfærden virker inkonsekvent med, at aliasset er gyldigt for den endelige projektion, og den sædvanlige regel om, at aliaset kun er gyldigt i rækkefølge efter klausul - det ser ud til at falde ned et sted midt imellem.



  1. Migrering fra MySQL Enterprise til MariaDB 10.3

  2. GRUPPER EFTER vs. BESTIL EFTER

  3. Postgresql Drop View

  4. dvale orakelsekvens producerer stort hul