使用mySQL选择表中最后n行的最有效方法是什么?该表包含数百万行,并且在任何给定时间我都不知道该表有多大(它在不断增长).该表有一个自动递增的列,并用作每行的唯一标识符.
Era*_*rin 46
SELECT * FROM table_name ORDER BY auto_incremented_id DESC LIMIT n
Run Code Online (Sandbox Code Playgroud)
Ser*_*sky 16
实际上,按顺序获取最后n行的正确方法是使用子查询:
(SELECT id, title, description FROM my_table ORDER BY id DESC LIMIT 5)
ORDER BY tbl.id ASC
Run Code Online (Sandbox Code Playgroud)
因为这种方式是我所知道的,它将以正确的顺序返回它们.接受的答案实际上是" 从按降序ID排序的集合中选择前5行 "的解决方案,但这很可能是您需要的.
(类似于“marco”的答案,)
我最喜欢的也是 MySQL 的 max() 函数,在一个简单的单行中,但还有其他肯定的方法:
SELECT whatever FROM mytable WHERE id > (SELECT max(id)-10 FROM mytable);
Run Code Online (Sandbox Code Playgroud)
...你会得到“last id minus 10”,通常是该表的最后 10 个条目。
这是一种简短的方法,不仅可以在存在 auto_increment-row(此处为 id)的情况下避免错误 1111(“无效使用组函数”)。
max() 函数有多种使用方式。
| 归档时间: |
|
| 查看次数: |
27955 次 |
| 最近记录: |