最后添加项目表中的最后10项

时间:2011-08-08 09:35:29

标签: php mysql sql

我正在进行网络聊天,我想在页面底部显示最后添加的消息,我希望限制最后10条消息。

我的sql查询现在看起来像:

SELECT * FROM messages WHERE chat_room=5 LIMIT 10

但这不符合我的要求。如果我在表格中有20个带有消息的项目,则此查询会选择1到10之间的项目,但我想要从10到20以及最后的消息。

表消息的UNIX时间格式(INT)<_ p>列为create_date

如何更改此查询?

4 个答案:

答案 0 :(得分:4)

Arnep的答案几乎是正确的,但它会返回一个列表,最后一条消息在顶部....

SELECT *
FROM
(SELECT * 
    FROM messages 
    WHERE chat_room=5 
    ORDER BY your_date_column DESC 
    LIMIT 10) ilv
ORDER BY your_date_column ASC

答案 1 :(得分:3)

您应该按添加的日期排序,因为无法保证按照您将这些行插入表格的顺序存储和检索这些行。列your_date_column包含每条消息的日期时间。

SELECT * FROM messages WHERE chat_room=5 ORDER BY your_date_column DESC LIMIT 10 

答案 2 :(得分:3)

您需要按正确的顺序询问数据。

这样的东西
SELECT * FROM messages WHERE chat_room=5 ORDER BY message_ID DESC LIMIT 10

答案 3 :(得分:2)

只需按时间戳或行ID等索引对它们进行排序即可。

SELECT * FROM messages WHERE chat_room=5 ORDER BY timestamp LIMIT 10