首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选择最后20个按升序排序- PHP/MySQL

选择最后20个按升序排序- PHP/MySQL
EN

Stack Overflow用户
提问于 2011-05-06 22:21:54
回答 8查看 55.9K关注 0票数 31

这是我的表结构

代码语言:javascript
复制
MyTable
ID[P.K][auto increment]   TopicID   UID   Comment

现在我想要获取TopicID的最后20条评论,但它应该按升序排序!

就像Facebook默认只显示最后20条评论一样

我正在寻找一个优化的版本,我可以做这与2/3查询和php排序数组,但寻找一些更好的替代

Sample Result with data

代码语言:javascript
复制
MyTable  
ID TopicID UID Comment  
1  1       10  AAAA   
2  1       11  BBBB  
3  1       10  CCCC  
4  1       10  dddd   
5  1       11  EEEE  
6  1       10  FFFF

我想得到TopicID的最后3个结果,结果应该是

代码语言:javascript
复制
4  1       10  dddd   
5  1       11  EEEE  
6  1       10  FFFF

而不是

代码语言:javascript
复制
6  1       10  FFFF  
5  1       11  EEEE  
4  1       10  dddd  
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-06 22:25:41

首先,选择最后20个条目。然后按升序对它们进行排序。您可以在单个查询中轻松完成此操作(使用子查询):

代码语言:javascript
复制
select * from (
    select * from your_table order by id desc limit 20
) tmp order by tmp.id asc
票数 47
EN

Stack Overflow用户

发布于 2011-05-06 22:25:50

代码语言:javascript
复制
SELECT  *
FROM    (
        SELECT  *
        FROM    mytable
        WHERE   topicid = $mytopicid
        ORDER BY
                id DESC
        LIMIT 20
        ) q
ORDER BY
        id

或者,更有效地,

代码语言:javascript
复制
(
SELECT  *
FROM    mytable
WHERE   topicid = $mytopicid
ORDER BY
        id DESC
LIMIT 20
)
ORDER BY
        id
票数 4
EN

Stack Overflow用户

发布于 2017-05-29 15:51:09

这应该是完成这项工作的最短表达式:

代码语言:javascript
复制
    (select * from your_table order by id desc limit 20) order by id; 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5912770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档