2012-01-10 204 views
2

此代碼可用於從mysql中的表中選擇前10條記錄。我怎樣才能做到這一點,顯示一個有1000條記錄的表中的最後十條記錄。我想以asc順序顯示名稱,但不想改變它。如何從mysql中的表中選擇最後N條記錄

SELECT name, cost FROM test orderby name asc LIMIT 10 ; 
+0

它既可以按名稱排序,也可以按日期插入/唯一標識。 – 2012-01-10 16:36:45

+0

這取決於你的意思是最後的N個記錄 - 按照他們的名字或者編號,日期或者成本或者其他的順序嗎? – Abhay 2012-01-10 16:45:49

回答

6
SELECT q.name, q.cost 
    FROM (SELECT name, cost 
       FROM test 
       ORDER BY name DESC LIMIT 10) q 
    ORDER BY q.name ASC; 
2
SELECT name, cost 
FROM (SELECT name, cost FROM test orderby name desc LIMIT 10) as test 
ORDER BY name asc; 
3

LIMIT子句可以採用兩個參數,這將提供一個偏移:

LIMIT子句可以用於約束的行數由SELECT返回 聲明。 LIMIT採用一個或兩個數字參數 ,它們都必須是非負整數常量(使用 預準備語句時除外)。

使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大數量的行數 。初始行的偏移量爲0(不是1):

SELECT * FROM tbl LIMIT 5,10; #檢索行6-15要從某個偏移量直到結果集的末尾檢索所有的 行,可以使用 的一些大數目作爲第二個參數。此聲明 檢索從第96行到最後一行的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;用一個參數 該值指定從 開始返回的行數結果集:

SELECT * FROM tbl LIMIT 5; #檢索前5行

http://dev.mysql.com/doc/refman/5.0/en/select.html

這個

所以:

SELECT name, cost FROM test orderby name asc LIMIT 990, 10; 
+5

當插入一行並且表現在總共有1,001行時會發生什麼? – 2012-01-10 16:41:04

0

您可以使用ROW_NUMBER()對於此條款,這將有利於你

選擇頂部「N」* from(選擇ROW_NUMBER()OVER(按Col_Name desc排序)爲RowNo,* from Table_Name)Table_Name

相關問題