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
운영게시판
최근게시물
MySQL Q&A 30344 게시물 읽기
No. 30344
이 쿼리문 더 단순하게는 안되는 건가요?
작성자
임꺽정
작성일
2012-10-31 14:21
조회수
7,881

 SELECT * FROM ((SELECT aa.* FROM test AS aa INNER JOIN (SELECT age FROM test WHERE age < 20 ORDER BY age DESC LIMIT 5) AS a ON aa.age = a.age)

UNION 
(SELECT bb.* FROM test AS bb INNER JOIN (SELECT age FROM test WHERE age > 80 ORDER BY age LIMIT 10) AS b ON bb.age = b.age)) AS union_table ORDER BY union_table.age;
 
반갑습니다
제가 워하는 결과는 test  라는 테이블에 회원정보가 있을때.
나이가 20살 밑인 사람중에 나이가 많은 사람 5명을 뽑고 (만약 15, 20, 17, 15, 16, 18, 12, 19 이런 데이터가 있을때 20, 19, 18, 17, 16) !
또 나이가 80살 보다 많은 사람중 어린순서부터 10명을 뽑아서 나이순대로 정렬시키고 싶습니다.
 
밑에 회원님께서 UNION 을 쓰라고 힌트를 주셔서 연구끝에 위와 같은 쿼리문을 만들어 냈습니다.
근데 분명 더 쉬운 쿼리가 있을것도 같아서 질문 드립니다.
 
다른 더 좋은 방법은 없을까요? UNION 같은 경우 LIMIT 랑 ORDER BY 가 따로 따로는 안 먹더라구요. 그래서 어쩔 수 없이 서브쿼리를 이용했습니다.
이 글에 대한 댓글이 총 1건 있습니다.

요구조건 만 보면 아래 쿼리가 맞을 것 같은데

SELECT *

FROM(

SELECT *
FROM test
WHERE age < 20
ORDER BY age DESC
LIMIT 5

)

UNION ALL

SELECT *

FROM (

SELECT *
FROM test
WHERE age > 80
ORDER BY age ASC
LIMIT 10

);

 

나이가 같은 사람이 많을 경우 ORDER BY 조건을 확인 해야 할 것 같네요

박인호(paerae)님이 2012-10-31 15:13에 작성한 댓글입니다.
이 댓글은 2012-10-31 15:20에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
30351mysql 에 접근해서 엑셀형태로 내려받으려고합니다. [2]
김현수
2012-11-07
8369
30348mysql 순서 정렬 업데이트 문의 해봐여~~~ [2]
임두환
2012-11-01
10431
30347DB 성능 궁금사항 [1]
이해완
2012-11-01
8720
30344이 쿼리문 더 단순하게는 안되는 건가요? [1]
임꺽정
2012-10-31
7881
30343데이터베이스에 사진을 넣고 싶은데 [1]
초보자
2012-10-30
8476
30342mssql데이타를 mysql데이타로이전 이렇게는안되는건가요 [1]
김길동
2012-10-30
7840
30341초보 DB 설계중인데 조언좀 부탁드립니다. [1]
장대찬
2012-10-27
8374
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.027초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다