2009-07-19 3 views
6

다음 구조를 가진 테이블이 있습니다.MySQL에서 MAX와 LIMIT를 함께 사용하는 방법

ID | 색상

1 | 빨간색
2 | 청색
3 | 황색
8 | 보라색
10 | 녹색
.
.
.
100 | yellow

첫 번째 5 개의 행에 대해 MAX ID 값을 잡고 싶습니다.

예를 들어, 정말 같은 것을 할 싶습니다 : 선택 MAX 표 LIMIT 값 10

을 반환이 기대 5

에서 (ID)하지만, MySQL은 100을 반환 계속 ... 그것의 MySQL은 LIMIT 절도 보지 못한다.

답변

19

상위 5 개 레코드 (ID로 정렬 됨)를 선택한 다음 해당 그룹의 최고 값을 얻으려는 것 같습니다. 그렇다면 :이 MyISAM 테이블의 경우

SELECT id FROM table LIMIT 4,1 

한 행을 얻기하지만 'id로하기 위해'4 첫번째 .. 추가를 건너 :

SELECT 
    MAX(ID) 
FROM 
    ( 
     SELECT ID 
     FROM YourTable 
     ORDER BY ID 
     LIMIT 5 
    ) as T1 
+1

"선택 *"할 필요는 없습니다. "select id"만으로 충분합니까? (나는 잘 모르겠지만 아마도 당신이 필요로하는 필드만을 선택하면 아마 메모리가 줄어들 수 있습니다 - 항상 좋은 것입니다) –

+0

Works Perfectly !! 감사합니다. –

+0

예, 이것은'SELECT ID'이어야합니다. – gahooa

1

사용 하위 선택 :

SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5); 

하는 것은 매우 유효한 SQL되지 않을 수도 있습니다,하지만 당신에게 일반적인 아이디어를 줄 것이다.

+4

유효하지 않은 SQL. 파생 된 각 테이블마다 별칭이 필요하며 + 주문을 받아야 "정의 된"결과를 얻을 수 있습니다. – gahooa

9

부속보다이 작업을 수행하는 더 좋은 방법이있다. 다음 구조를 가진 테이블이 있으면

+2

나를 위해 작동합니다. 이 답변은 과소 평가 된 것 같습니다. –

+1

얼마나 많은 행이 있는지 알고있는 경우 작동합니다. 행 수를 초과하면 쿼리는 NULL을 반환합니다. 나는 이것을 배치 목적으로 필요로했지만, 나의 경우 맥 버전이 더 적합하다. – talereader

0

ID | Color 

1 | red 
2 | blue 
3 | yellow 
8 | purple 
10| green 
. 
. 
. 
100|yellow 
는 는 제 5의 (AUTO_INCREMENT?)에 대한 값들이 MAX ID 값 Btw는 제 이고, 상기 제 6 개 값의 MAX ID 값은 6이다

그리고 모든 값은 100입니다. 감사합니다.

관련 문제