2010-04-22 5 views
1

특정 학생에게 가장 가까운 10 점을 원합니다. 예를 들어 John은 73 점을 받았고 John에게 가장 가까운 오름차순으로 73 점 이상의 점수를 가진 10 명의 학생을 찾아야합니다. 내 테이블 구조는 (id, name, marks)입니다. (당신이 하나의 존을 가지고 있다고 가정)클래스의 닫기 마크를 찾기위한 mysql 쿼리

SELECT id, name, marks 
FROM table1 
WHERE marks > (SELECT marks FROM table1 WHERE name = 'John') 
ORDER BY marks 
LIMIT 10 
+4

지금까지 어떤 진술을 시도해 보셨습니까? – JYelton

답변

2

이보십시오.

Limit은 출력을 10 개의 행으로 제한합니다.

+0

[name = 'John'] 대신 1-1 ID 비교를 사용해야합니다. – Ben

+0

@ 벤 : 당연히 그래야하지만 그건 그가 요구 한 것이 아닙니다. –

2
Select s.id, s.name, s.marks 
From students sj 
Join students s On (s.marks > sj.marks) 
Where sj.name = 'John' 
Order By s.marks 
Limit 10 

sj 학생 John 될 것이며, s 요한보다 큰 표시가있는 모든 레코드를 포함

+0

왜'LIMIT 1,10'인가? –

+0

@Mark : 왜 그렇게 생각할 지 모르지만 (MySQL을 실제로 사용하지 않음), 지금은 시도 할 수 없기 때문에 제거했습니다. 의견을 주셔서 감사 드리며 답에 (+1)도 맞습니다. –

+0

첫 번째 값은 오프셋 (0 = 오프셋 없음)입니다. LIMIT 1,10은 첫 번째 행을 건너 뜁니다. 나는 그것이 여기에 필요하다고 생각하지 않는다. http://dev.mysql.com/doc/refman/5.1/en/select.html –