如何从mysql中的表中选择最后N条记录
此代码可用于从mysql中的表中选择前10条记录。我怎样才能做到这一点,显示一个有1000条记录的表中的最后十条记录。我想以asc顺序显示名称,但不想改变它。如何从mysql中的表中选择最后N条记录
SELECT name, cost FROM test orderby name asc LIMIT 10 ;
SELECT q.name, q.cost
FROM (SELECT name, cost
FROM test
ORDER BY name DESC LIMIT 10) q
ORDER BY q.name ASC;
SELECT name, cost
FROM (SELECT name, cost FROM test orderby name desc LIMIT 10) as test
ORDER BY name asc;
的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;
当插入一行并且表现在总共有1,001行时会发生什么? – 2012-01-10 16:41:04
您可以使用ROW_NUMBER()对于此条款,这将有利于你
选择顶部“N”* from(选择ROW_NUMBER()OVER(按Col_Name desc排序)为RowNo,* from Table_Name)Table_Name
它既可以按名称排序,也可以按日期插入/唯一标识。 – 2012-01-10 16:36:45
这取决于你的意思是最后的N个记录 - 按照他们的名字或者编号,日期或者成本或者其他的顺序吗? – Abhay 2012-01-10 16:45:49