2011-02-28 76 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',你如何定義**最後**,插入順序?其他一些列? – 2011-02-28 09:18:32

+0

插入順序(id爲自動增量) – David19801 2011-02-28 09:21:16

+1

如果'id'是一個自動增量,因此(最有可能)是'UNIQUE KEY',那麼您的查詢最多隻返回1行。 – 2011-02-28 09:22:26

回答

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 2011-02-28 09:20:31

+0

@ David19801:你說得對。謝謝。 :) – Gumbo 2011-02-28 09:21:30

+0

所以是他們的一種方式? – David19801 2011-02-28 09:22:18

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分鐘前發佈了確切的答案,您有什麼要補充的嗎?如果是,請更新您的答案,否則請刪除它,並提出Gumbo的答案。 – 2011-02-28 09:25:33

+0

@The事實上,Gumbo的查詢在10分鐘前產生了一個錯誤:) – 2011-02-28 09:32:58

0

爲了簡單:使用點即table1.name,例如

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

我認爲這應該工作。