Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: OT: Order By Position and UNION
Thanks for the response. I'm wondering if it has always been like that or if it changed with a recent version -- don't know since I have always used positional notation going back to V5 when I started using Oracle (and yes, I know people go back further than that -- that's not the point I was trying to make). Taking your example further, if I alias each column (in your case alias deptno and locid as empno), it will still work if I refer to empno in the ORDER BY. Not that our queries make much sense ;-)
Anyway, I think it's obvious why I used OT in the subject line -- we are talking about some trivial things here ;-) But, there is still the curiosity factor that made me want to know if it has always been this way or if this behavior was introduced in a particular version or point release. For example, in-line views were "there" in 7.1 but not official until 7.2 (I think those are the correct versions, it's been a while).
OK, I did a deja search since this is bugging me and at one point, based on posts I pulled up and the examples they provided, you were *required* to use positional. And as we see PL/SQL sometimes lagging SQL, there also were mentions of where referring to a column name was supported in SQL but not in PL/SQL, and references to in earlier versions where positional was required in both. But, none of the posts happened to mention what version of the DB.
So I now know that I'm not crazy, that positional was mandatory at some point. It's interesting what the manuals say and your examples showing the difference between unioning 2 or 3 selects, and then what happens with aliasing all to be the same. I'll stick with positional to be safe.
Regards,
Larry G. Elkins
elkinsl_at_flash.net
-----Original Message-----
JRicard982_at_aol.com
Sent: Thursday, July 12, 2001 6:51 PM
To: Multiple recipients of list ORACLE-L
Larry,
You can use column name if you only have two statements with your set operators. However, any more than that you must user positional. See below.
1 select empno, ename from emp
2 union
3 select deptno, dname from dept
4 union
5 select locid, room from location
6* order by empno
SQL> /
order by empno
*
ERROR at line 6:
ORA-00904: invalid column name
SQL> select empno, ename from emp
2 union
3 select deptno, dname from dept
4 union
5 select locid, room from location
6 order by 1
7 /
EMPNO ENAME
---------- --------------
10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 45 101 46 202 47 103 48 105 49 105 50 404 51 421 52 211 53 424 54 402 55 433 56 217 57 222 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER
31 rows selected.
SQL>
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Larry Elkins
INET: elkinsl_at_flash.net
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists --------------------------------------------------------------------To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Thu Jul 12 2001 - 19:05:22 CDT
![]() |
![]() |