如何查询数据库最后10条记录并正序输出

齐鲁至滇 2016-03-08 11:49:37

下面是从网上找到的方案:

获取数据库最后若干条记录是很常见的用法,下面分别用几种方法去实现,当作SQL的练习吧。
一种方法是数据库记录倒序排序,然后用limit 10子句获取10条:
1, 逆序:
mysql> SELECT title AS TITLE FROM news ORDER BY id DESC LIMIT 10;
2,正序:
也可以取得最大记录的id,然后在WHERE子句减去10。
mysql> SELECT temp.title as 标题 FROM news AS temp WHERE news_id > (SELECT MAX(id) FROM news) - 10;
3,正序:
下面也是用一样的方法,不过使用的是 count() 函数:
mysql> SELECT temp.title as 标题, temp.id as ID FROM news AS temp WHERE id > (SELECT count(temp.id) FROM news) - 10;

我的实际方案:
select * from table order by id desc limit 10; ---按照ID 逆序排列,选取前10个,但是这10个数据的顺序是逆序,如何实现正常顺序的最后10组数据呢?
我该如何按照网上搜到的方法2或3来执行呢? 看不懂方法2 中的news-->news_id 是啥意思?请高手指教!!

...全文
1952 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
齐鲁至滇 2016-03-09
  • 打赏
  • 举报
回复
感谢小灸舞的解答,我也是刚刚测试出来正确的方法,和你说的一样! 关键是要添加临时表名,例如你写的a, 我使用的是temp, 便于别人查看和理解。 "select * from (select * from table order by id desc limit 10) temp order by id"; 但是对于网上找到的方法2 和方法3 还是没有弄明白怎么写, news,news_id ; temp, temp.id ?
小灸舞 2016-03-09
  • 打赏
  • 举报
回复
我服了。。。。 select * from (select * from table order by id desc limit 10) a order by id;
小灸舞 2016-03-09
  • 打赏
  • 举报
回复
上面那个显示好奇怪啊。。我重新来一下

select * from (select * from table order by id desc limit 10) a order by id;
齐鲁至滇 2016-03-09
  • 打赏
  • 举报
回复
去掉desc ,获取的是前10组数,我需要的是最新的10组数,即数据库内时间戳最大的十组数据。
小灸舞 2016-03-09
  • 打赏
  • 举报
回复
LZ不妨这样:

select * from (select * from table order by id desc limit 10) a order by id;
zhu19774279 2016-03-09
  • 打赏
  • 举报
回复
把desc去掉

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧