我正在进行简单的基于网络的聊天,因此我需要从MySQL数据库中获取(例如)30条最新消息。这没有任何问题,但我怎样才能将数据向上调整?我的意思是,最早的信息是第一个。我必须加上最新的30条记录。
编辑:谢谢你的回答,但是......
ORDER BY添加了DESC LIMIT 30
给出:
15,14,13,12,11
......我需要:
11,12,13,14,15
我知道我可以使用子查询来获取它。有没有更好的方法?
答案 0 :(得分:5)
如果没有子查询,我没有看到任何方法,但它应该不是问题。外ORDER BY
只排序30行,因此性能损失可以忽略不计。
SELECT * FROM
(
SELECT *
FROM posts
ORDER BY post_time DESC
LIMIT 0, 30
) x
ORDER BY post_time ASC
当然,您应该使用实际的列名而不是*
。
答案 1 :(得分:4)
如上所述,简单的“desc”排序获取最早的30条消息,而不是最新消息(尽管它们的顺序正确)。
实际上你只需要:
(通过添加的desc限制30从表顺序中选择col)添加asc
的顺序
我希望这会有所帮助。
答案 2 :(得分:0)
假设您有一个名为MessageTimestamp
的列,其中包含每条消息的时间戳:
SELECT [...] FROM MyChatTable ORDER BY MessageTimestamp DESC LIMIT 30