2012-11-27 2 views
21

테이블이 있는데 생성 된 마지막 10 개의 레코드와 ID가 x 인 레코드를 반환하는 쿼리를 원합니다.LIMIT 문을 사용하여 두 개의 SQL select 쿼리 (LIMIT 문 포함)를 결합하십시오.

SELECT * FROM catalog_productimage 
ORDER BY date_modified 
LIMIT 10 
UNION 
SELECT * FROM catalog_productimage 
WHERE id=5; 

을하지만 UNION 전에 거기에 LIMIT을 넣을 수 있습니다처럼은 보이지 않는다 -

내가 할 노력하고있어. 나는 다른 열을 추가하고 정렬을 사용하여 시도했다 -

SELECT id, date_modified, IF(false, 1, 0) as priority FROM catalog_productimage 
UNION 
SELECT, id, date_modified, IF(true, 1, 0) as priority FROM catalog_productimage 
WHERE id=5 
ORDER BY priority, date_modified 
LIMIT 10; 

을하지만 많은 진전을 보이고 있지 않다 .. 이것은 20 당신에게 10에서 레코드를 줄 것이다 당신이 함께 시작한 얻어야한다

답변

36

로 회신됩니다

(SELECT * FROM catalog_productimage 
ORDER BY date_modified 
LIMIT 10) 
UNION 
SELECT * FROM catalog_productimage 
WHERE id=5; 
+0

내가 그렇게 거의 있었다! 감사! –

1

그냥이 작동하는지 확인 SQLfiddle

SELECT * 
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY cat_id) cat_row_no, a.* FROM catalog_productimage a where x=5) 
WHERE cat_row_no > 10 and cat_row_no <20