0

我需要在不使用"ORDER BY DESC"排序原因的情况下显示表格的最后 50 行。示例:如果我执行下一个查询

mysqli_query("SELECT * FROM table ORDER BY ID DESC LIMIT 50");

我将获得最后 50 行,这正是我想要获得的,但是这里的问题是,如果我回显这些行,它将以最后一个 Id 开头,依此类推。

这就是为什么我猜测作为解决方案的起点。谢谢你的时间。

4

3 回答 3

1

如果您想临时存储这么小的聊天消息列表并自动使它们过期,那么您不应该使用 RDBMS,它的工作是持久存储大量数据。

相反,请考虑使用消息队列。例如,RabbitMQ

于 2013-02-21T17:15:42.567 回答
0

我想出了下一个解决我的问题的方法:

$qId = mysqli_query($classDB->con,"SELECT id, message, userName FROM chat ORDER BY id DESC LIMIT 1"); /* Getting the last Id of the table */
$rowId = mysqli_fetch_array($qId);
$index = $rowId['id'] - $limit; /* limit = number of rows that I want to show */
$qChat = mysqli_query($classDB->con,"SELECT id, message, userName FROM chat ORDER BY id ASC LIMIT $index, $limit"); /* $index is the starter point*/
 while($row = mysqli_fetch_array($qChat) ){
// show messages
}
于 2013-02-21T21:56:30.207 回答
0
DELETE FROM CHAT_TABLE WHERE ID IN (
     SELECT ID FROM (
        SELECT ID    
        FROM CHAT_TABLE
        ORDER BY TIME DESC
        LIMIT 50) TEMPTBL
);
于 2013-02-21T17:18:23.827 回答