php - mysql单次查询获取最新10条结果

标签 php mysql

好吧,我的问题比标题所说的要难一点...

我有一个包含消息的表格,我使用 while 循环将所有这些消息加载到 php 中。

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

"SELECT * 
 FROM messages 
 WHERE thread_id = '" . $thread_id . "'
 ORDER BY date_sent"

工作正常并一个接一个地返回所有消息,所以我在底部有最新的消息(这很重要,因为我的消息模块像 facebook 一样工作,底部有一个小的回复字段,让用户直接聊天)

现在,我想要的是在单个查询中只给我最新的 10 个结果的查询。

我已经有了所需结果的数量($number_of_results = 10;)

如果我不必先计算结果的行数,而是在单个查询中请求结果,那就太棒了。

类似于:

"SELECT * 
 FROM messages 
 WHERE thread_id = '" . $thread_id . "'
 ORDER BY date_sent 
 LIMIT TOTAL_NUMBER_OF_ROWS_WHERE_THREAD_ID_IS_MY_THREAD_ID-$number_of_results, $number_of_results"

有没有办法做这样的事情......?

最佳答案

"SELECT * 
 FROM messages 
 WHERE thread_id = '" . $thread_id . "' 
 ORDER BY date_sent DESC 
 LIMIT 10";

确保你有这个索引

ALTER TABLE messages 
ADD INDEX threadid_datesent_ndx( thread_id, date_sent );

如果你想让 10 再次反转,那么这样做:

"SELECT * 
 FROM
 (
     SELECT * 
     FROM messages 
     WHERE thread_id = '" . $thread_id . "' 
     ORDER BY date_sent DESC LIMIT 10
 ) A
 ORDER BY date_sent";

关于php - mysql单次查询获取最新10条结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10543182/

相关文章:

php - sonata admin 变量 "form_helper"不存在。 Twig 更新后

php - 从数据库中的数据合并 Excel 工作表的单元格 PHPExcel 类

mysql - 查找两列上的重复条目总数

mysql - 插入 MYSQL 时自动初始化 GETDATE()

MySQL外键约束失败

mysql - MySQL存储过程中的参数

PHP - 从 URL 下载并通过 FTP 上传

php - PHP Intranet 可以共享 Windows 登录名吗?

php - 在 PHP 中验证选择下拉数组

php - 我想简单地制作一个使用 zendframework2 连接到 mysql 数据库的对象