2011-02-28 5 views
0

나는 mysql 쿼리가 :mysql 마지막 5 역순으로?

SELECT `name` FROM `table1` WHERE id='0' ORDER BY `id` DESC LIMIT 5 

이것은 괜찮아요, 나에게 반환 된 배열의 첫 번째되는 테이블에서 마지막으로 마지막 5 요소를 가져옵니다. 승인.

하지만! 나는 정상 테이블 순서에서 마지막 5를 얻으려고하고있다. (메인 테이블의 마지막은 리턴 된 배열에서 5가되고 그 전에는 4가 될 것이다.)

ASC를 시도했는데, t 작업 ...

어떻게해야합니까?

+0

* 하나의 'id'에 대해 * 필터링 * 했으므로 어떻게 ** 마지막 ** 삽입 순서를 정의합니까? 다른 컬럼? –

+0

삽입 순서 (ID는 자동 증가) – David19801

+1

'id'가 자동 증가이므로 (가장 가능성 있음) '고유 키'인 경우 쿼리는 최대 하나의 행만 반환합니다. –

답변

4

쿼리 subquery 확인 :

SELECT `name` 
FROM (SELECT `id`, `name` FROM `table1` WHERE id='0' ORDER BY `id` DESC LIMIT 5) tmp 
ORDER BY `id` ASC 
+0

# 1248 - 파생 테이블마다 고유 한 별칭이 있어야합니다? – David19801

+0

@ David19801 : 네 말이 맞아. 감사. :) – Gumbo

+0

그래서 그들의 방법입니까? – David19801

3

을 시도해보십시오이

select `name` 
from (
    select `id`, `name` 
    from `table1` 
    where id='0' 
    order by `id` desc 
    limit 5 
) as source 
order by `id` asc 
+0

당신의 정확한 답변이 5 분 전에 게시 된 것을 볼 수 있습니다. 추가 할 항목이 있습니까? 예, 대답을 업데이트하십시오. 그렇지 않으면 삭제하고 검보의 대답을 upvote하십시오. –

+0

@The Gumbo의 쿼리로 10 분 전에 오류가 발생했습니다. :) –

0

단순성의 경우 : 점 즉의 table1.name을 사용하여, 예를 들어,

$query = "SELECT * FROM `users` ORDER BY `users`.`date_of_rsvp` DESC"; 

나는 이것이 작동해야한다고 생각합니다.