2010-05-11 5 views
0

20 개의 항목이있는 테이블이 있다고 가정 해 보겠습니다. 이들은 날짜순으로 정렬됩니다 (날짜는 열 이름> _>). 내림차순입니다. 가장 최근의 항목과 15 번째로 오래된 항목 만 선택하면 어떻게됩니까?단일 쿼리에서 두 개의 특정 mysql 테이블 행 선택

나는 다음과 같은 쿼리

SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 15; 
+0

당신이 몇 가지 조합 선택 마법을하지 않는 한 당신은 두 개의 쿼리에서만 이것을 할 수 있다고 믿습니다. LIMIT 1 및 LIMIT 1,15 – Robus

답변

2

을 추가

사용 :

SELECT x.* 
    FROM (SELECT a.*, 
       @rownum := @rownum + 1 AS rank 
      FROM mytable a 
      JOIN (SELECT @rownum := 0) r 
     WHERE a.col1 = "zzz" 
     ORDER BY a.date DESC) x 
WHERE x.rank IN (1, 15) 
+0

흠, "알 수없는 테이블 'a' " – smont

+0

@Scotta : 수정 된 테이블 별칭이 잘못되었습니다. –

+0

아, 정말 고마워! – smont

0

두 개의 SELECT들

의 UNION을 사용할 필요가 있습니다를 수행하여 모든 15 개 결과를 얻고있다
(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date LIMIT 1, 15) 
UNION 
(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 1) 

UPDATE : 괄호

+0

UNION을 사용할 때 하나의 ORDER BY 만 허용됩니다. –

+0

당신은 옳았 습니다만, 방금 추가 한 괄호가 붙어 있습니다. 그냥 시도했습니다. – marianboda