이것은 PHP-Steven의 답변에 대한 수정 사항이지만 댓글 작성에 충분한 담당자가 없습니다.
SELECT `lap_time`, `uid`
FROM `table` t1
WHERE `lap_time` =< 120
AND NOT EXISTS (SELECT 1 FROM `table`
WHERE `uid` = t1.`uid` AND `lap_time` > t1.`lap_time` AND `lap_time` < 120)
ORDER BY `lap_time` DESC
LIMIT 5
및
SELECT `lap_time`, `uid`
FROM `table` t1
WHERE `lap_time` > 120
AND NOT EXISTS (SELECT 1 FROM `table`
WHERE `uid` = t1.`uid` AND `lap_time` < t1.`lap_time` AND `lap_time` > 120)
ORDER BY `lap_time` DESC
LIMIT 5
유일한 차이점은 동일한 사용자에 의해 보조 랩타임을 제거 봉사 NOT EXISTS
절이다. 그렇지 않으면 가장 느리고 빠른 lap_times를 얻지 만 다음으로 가장 느리고 가장 빠른 순 사용자는 얻지 못합니다.
lap_time = column with lap times (assumed to be an int or numeric)
laps = table containing lap times
CURRENT_LAP_TIME = the lap time in question
다음
SELECT lap_time FROM laps
WHERE lap_time < CURRENT_LAP_TIME
ORDER BY lap_time DESC LIMIT 5
UNION
SELECT lap_time FROM laps
WHERE lap_time >= CURRENT_LAP_TIME
ORDER BY lap_time LIMIT 6
당신은 다른 SELECT 문에서 모든 일을 마무리하고 특정 순서를 원하는 경우에 의해 주문을 수행 할 수 있습니다
쿼리 및 테이블 구조 (또는 예제 데이터)를 게시하십시오. – jensgram
앞과 뒤의 행은 원래의'SELECT' 기준을 충족시켜야합니까, 아니면 단순히 원래 테이블의'SELECT' 행을 앞뒤로 따라야합니까? –
"이전"과 "이후"의 의미를 정확하게 지정하십시오 (정렬 기준). – VolkerK