回答
看起來每個人都缺少這一部分:
但如何選擇最後一個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行 - codeigniter
- 2. mysql從最後n行中選擇
- 3. 如何從mysql中的表中選擇最後N條記錄
- 4. MySQL的選擇最後N行有關的ID
- 5. 在MySQL中選擇最後一行
- 6. 如何在mySQL中選擇每第n行開始於n
- 7. MySQL:選擇最後X行,然後選擇特定行
- 8. 如何選擇mysql中的最後一行
- 9. MySQL:選擇最後執行的查詢
- 10. 如何從mysql的最後一行選擇到第一行
- 11. 選擇最後N個唯一的記錄mysql的
- 12. MySQL每天選擇最後一行
- 13. 從MySQL PHP選擇最後兩行
- 14. 選擇最後5個MySQL行
- 15. mysql:從DESC LIMIT選擇最後10行
- 16. 如何選擇mysql_query的最後一行?
- 17. 如何用Java選擇MySQL表的最後一行?
- 18. 選擇沒有LIMIT的n行mysql
- 19. MySQL的選擇前N行每一類
- 20. MySQL的 - 選擇前n行,2列
- 21. 如何在php mysql中的最後10條記錄之後選擇行?
- 22. 如何在CockroachDB中選擇第n行?
- 23. 如何在MySql表中選擇每行N次?
- 24. 如何選擇最後但從MySQL表10行
- 25. 選擇最後的x行
- 26. 如何選擇整行從列中選擇最小值或最大值 - MySql
- 27. 選擇最大的「n」值
- 28. MySQL從兩列中選擇組中的最後一行
- 29. 如何在mySQL中選擇無空的最後一列
- 30. 如何選擇MySQL中每個topic_id的最後兩條記錄
這裏你沒有任何順序。 – 2012-03-19 19:50:52
您的表格是否有可用於按順序放置數據的字段(或多個字段)?也許是一個TIMESTAMP列或一個自動遞增的INT列? – 2012-03-19 19:53:15