database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 32585 게시물 읽기
No. 32585
union all 사용시 order by 에러이유
작성자
원더원더(leeyy80)
작성일
2007-12-10 17:42ⓒ
2007-12-10 17:45ⓜ
조회수
17,848

union all 사용시 아래와 같이 구문을 쓰면 에러가 납니다.


select a.empno,

         a.ename

  from emp a

order by a.empno

 union all

select b.empno,

         b.ename

  from emp b

order by b.empno


이구문을


select a.empno,

         a.ename

 from emp a

union all

select b.empno,

         b.ename

  from emp b

order by empno


이와 같이 수정하면 에러없이 결과가 나오는데


왜 union all 사용시 order by구문을 위아래로 작성시 오류가 나는지 궁금합니다.

  

이 글에 대한 댓글이 총 2건 있습니다.

일종의 규칙입니다. 유니온 할때는 정렬하지 말자~ 하는.
이유는. 어차피 합칠건데 합치기 전에 정렬은 뭣하러 하냐? 무의미하다 이거겠죠.
일단 규칙이니 그대로 따르던가. 약간의 편법을 쓰면 됩니다.

1번처럼 하려면 한번더 감싸주면 되구요.
SELECT * FROM (SELECT ... ORDER BY ...)
UNION ALL
SELECT * FROM (SELECT ... ORDER BY ...)

2번이 되는 이유는 합치기 전 정렬이 아니라 합친 후 정렬이라 의미를 둔거구요.
물론 1,2번 결과는 다릅니다.
1번은 각가 정렬 후 합친거고
2번은 합친후 정렬이지요.

마농(manon94)님이 2007-12-10 17:58에 작성한 댓글입니다.

노파심에...ㅡ.ㅡ;

SELECT * FROM (SELECT ... ORDER BY ...)
UNION ALL
SELECT * FROM (SELECT ... ORDER BY ...)
ORDER BY ...

마농님이 결과가 다르다고 하니 똑같게 하려고 위처럼 쓰면 바보입니다...ㅡ.ㅡ;

성시현(finecomp)님이 2007-12-10 18:33에 작성한 댓글입니다.
이 댓글은 2007-12-10 18:34에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
32588commit 안하고 160만개를 insert 했는데 [2]
qkr
2007-12-11
2668
32587인덱스 생성 스크립트에서...parallel 의미... [2]
ohmyfl
2007-12-10
2123
32586Data Guard standby DB Sync 문제... [1]
박종순
2007-12-10
2458
32585union all 사용시 order by 에러이유 [2]
원더원더
2007-12-10
17848
32584시퀀스도 시노님을 걸어서 사용할 수 있나요? [1]
시노님
2007-12-10
1826
32583Data Buffer Cache에 Table 항상 올려놓기 [1]
chozza
2007-12-10
1838
32582쿼리 문의 드립니다.. [1]
김세종
2007-12-10
2035
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v17.5로 자료를 관리합니다