我需要在不使用"ORDER BY DESC"
排序原因的情况下显示表的最后50行。例:
如果我进行下一个查询
mysqli_query("SELECT * FROM table ORDER BY ID DESC LIMIT 50");
我将得到最后50行,正是我想要获得的,但问题是,如果我回显行,它将从最后一个Id开始,依此类推。
这就是我猜测起点作为解决方案的原因。谢谢你的时间。
答案 0 :(得分:1)
如果您想暂时存储这么小的聊天消息列表并自动使它们过期,您就不应该使用RDBMS,它的工作是持久存储大量数据。
相反,请考虑使用消息队列。例如,RabbitMQ。
答案 1 :(得分:0)
DELETE FROM CHAT_TABLE WHERE ID IN (
SELECT ID FROM (
SELECT ID
FROM CHAT_TABLE
ORDER BY TIME DESC
LIMIT 50) TEMPTBL
);
答案 2 :(得分: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
}