MySQL负面限制?

时间:2010-01-08 10:35:35

标签: mysql sql-order-by limit

我正在进行简单的基于网络的聊天,因此我需要从MySQL数据库中获取(例如)30条最新消息。这没有任何问题,但我怎样才能将数据向上调整?我的意思是,最早的信息是第一个。我必须加上最新的30条记录。

编辑:谢谢你的回答,但是......

  

ORDER BY添加了DESC LIMIT 30

给出:

  

15,14,13,12,11

......我需要:

  

11,12,13,14,15

我知道我可以使用子查询来获取它。有没有更好的方法?

3 个答案:

答案 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