我想在名为 id 的列中选择MySQL数据库中的最后50行,这是主键。目标是行应按
SELECT
*
FROM
`table`
ORDER BY id DESC
LIMIT 50;
值得注意的是,行可以被操作(删除),这就是为什么后续查询无法正常工作
SELECT
*
FROM
`table`
WHERE
id > ((SELECT
MAX(id)
FROM
chat) - 50)
ORDER BY id ASC;
问题:如何从MySQL数据库中检索可以操作并处于ASC顺序的最后N行?
答案 0 :(得分:190)
您可以使用子查询执行此操作:
SELECT * FROM (
SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC
这将从table
中选择 last 50行,然后按升序排序。
答案 1 :(得分:7)
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50
如果您有一个日期字段,用于存储发送聊天的日期(和时间)或任何以递增方式填写的字段(按DESC排序)或逐渐减少(按ASC排序)数据,则将其设置为第二列,数据应在其上订购。
这对我有用!!!!希望它会有所帮助!!!!
答案 2 :(得分:2)
SELECT * FROM table ORDER BY id DESC LIMIT 50
保存资源进行一次查询,不需要进行嵌套查询
答案 3 :(得分:0)
select * from Table ORDER BY id LIMIT 30
注意:
* id
应该是唯一的。
*您可以通过替换查询中的30
来控制返回的行数