回答
看起来每个人都缺少这一部分:
但如何选择最后一个30,在不改变顺序?
首先,显然在提供的查询中没有顺序。假设该命令是一些外地上升,这将是查询@DannyFox意味着:
SELECT * FROM T
ORDER BY val
LIMIT 0 , 30
现在想象一下,我们已经简化了数据,如a, b, c, d, e
和我们想只有3行,而不是30:
SELECT * FROM T
ORDER BY val
LIMIT 3
如果这在每一行中返回:a, b, c, d, e
,那么他预计按照该顺序得到c, d, e
。大家正在提供的查询:
SELECT * FROM T
ORDER BY val desc
LIMIT 3
会返回e, d, c
。问题在于它实际上改变了原来的订单,并且OP表示他不想改变订单。因此从技术上讲,这将导致c, d, e
查询是:
select * from (
select * from t
order by val desc
limit 3
) s
order by val
这实际上改变了顺序两次,获得原始订单回来。
看起来像我打败你,但像我这样思考+1。 :) – Shef 2012-03-19 20:15:55
哈哈,为你+1也:) – 2012-03-19 20:17:59
也许这将工作:select * from table WHERE id > ((SELECT MAX(id) from table) - 30);
如果删除了最后30条记录中的某些记录,并且id为自动增量,则结果将少于30条。 – 2012-03-19 19:53:40
是的,这可能很大,特别是如果ID之间存在差距。 “ORDER BY”条款是专业解决方案,仅此而已。 – Shef 2012-03-19 19:53:49
这个答案假设了很多关于表格的组成。 – 2012-03-19 19:54:20
如果你有一个自动增量键/列,说id
那么这里有一个例子
SELECT * FROM `table` ORDER BY id DESC LIMIT 0 , 30;
首先,你需要指定一个顺序:
SELECT * FROM table
ORDER BY some_id ASC -- ascending order
LIMIT 30
如果该查询返回前30列,则该列将返回最后30列:
SELECT * FROM table
ORDER BY some_id DESC -- descending order
LIMIT 30
既然你要设法避免订货,那么解决办法是申请两次了。
SELECT *
FROM (
SELECT *
FROM `table_name`
ORDER BY `column_name` DESC -- maybe id?
LIMIT 0, 30
) `table_aliase`
ORDER BY `column_name` ASC
没有关于订单的说法,所以您不能使用ORDER BY。 有一种方式来获得一个给定的点记录,但你需要知道有多少记录有,然后使用此计数值提供极限
SELECT COUNT(*) AS counted FROM table
SELECT * FROM table LIMIT (counted-30),30
这里与PHP中使用我的方法:
$query = "SELECT * FROM table ORDER BY id DESC LIMIT 3";
$res = mysql_query($query);
$results = array();
while($row = mysql_fetch_assoc($res)){
$results = $row[field];
}
// Back to original order based from DB
$results = array_reverse(results);
- 1. mysql从最后n行中选择
- 2. 从MySQL中选择最后N行 - codeigniter
- 3. 如何从mysql中的表中选择最后N条记录
- 4. 如何在mysql的最后一个日期之前选择最后n个月?
- 5. Cassandra cql:如何从表中选择最后n行
- 6. 在MySQL中选择最后一行
- 7. MySQL:选择最后执行的查询
- 8. 选择最后5个MySQL行
- 9. MySQL每天选择最后一行
- 10. 如何选择mysql_query的最后一行?
- 11. MySQL的 - 选择前n行,2列
- 12. MySQL的选择前N行每一类
- 13. 如何在CockroachDB中选择第n行?
- 14. 如何选择整行从列中选择最小值或最大值 - MySql
- 15. MySQL从两列中选择组中的最后一行
- 16. 选择最大的“n”值
- 17. 如何在mySQL中选择无空的最后一列
- 18. 如何选择MySQL中每个topic_id的最后两条记录
- 19. 如何分组最后的`n`行?
- 20. 如何从行中选择最后24小时的行偏移
- 21. MySQL:如何从表中选择所有行除了最后一行
- 22. SQL:选择N“最近”行升序
- 23. 如何选择最后3行,但最后一个
- 24. 如何在MySQL中选择某个列作用域的所有最后一行
- 25. PHP MYSQL选择最后插入的ID
- 26. DatagridView选择最后一行
- 27. 选择最后12行oracle
- 28. 选择最后一行
- 29. 为最后n行
- 30. 如何在MySQL中按用户选择最后一条记录?
这里你没有任何顺序。 – 2012-03-19 19:50:52
您的表格是否有可用于按顺序放置数据的字段(或多个字段)?也许是一个TIMESTAMP列或一个自动递增的INT列? – 2012-03-19 19:53:15