好吧,我的问题比标题所说的要难一点...
我有一个包含消息的表格,我使用 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/