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 가 따로 따로는 안 먹더라구요. 그래서 어쩔 수 없이 서브쿼리를 이용했습니다. |