我使用以下查询来检索我的数据库的最后10个结果,但我需要它们不按降序排列。无论如何我可以用查询来完成这个或者我需要在php中处理它吗?谢谢你的帮助。
SELECT * FROM MSG ORDER BY id DESC LIMIT 0,10
答案 0 :(得分:4)
SELECT * FROM(SELECT * FROM MSG ORDER BY id DESC LIMIT 0,10)ORDER BY id - 应该可以工作
答案 1 :(得分:4)
请尝试以下方法解决您的问题
SELECT * FROM (SELECT * FROM MSG ORDER BY id DESC LIMIT 10) AS RequiredLimit ORDER BY id ASC
答案 2 :(得分:3)
除了已有的mysql答案外,php解决方案是在原始结果集上使用array_reverse()。
答案 3 :(得分:1)
虽然使用嵌套查询是一个答案,但我认为执行两个查询比嵌套查询或子查询更优化。减少开销 - 如果我错了,请纠正我。
我建议:
$row_offset = get_result("SELECT COUNT(*) FROM MSG;") - 10;
$rows = get_result("SELECT * FROM MSG LIMIT " . $row_offset . ", 10;");
假设(当然!)get_results()是一个执行查询并从表中返回数据的自定义函数。