这是我的表结构
MyTable
ID[P.K][auto increment] TopicID UID Comment
现在我想要获取TopicID的最后20条评论,但它应该按升序排序!
就像Facebook默认只显示最后20条评论一样
我正在寻找一个优化的版本,我可以做这与2/3查询和php排序数组,但寻找一些更好的替代
Sample Result with data
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个结果,结果应该是
4 1 10 dddd
5 1 11 EEEE
6 1 10 FFFF
而不是
6 1 10 FFFF
5 1 11 EEEE
4 1 10 dddd
发布于 2011-05-06 22:25:41
首先,选择最后20个条目。然后按升序对它们进行排序。您可以在单个查询中轻松完成此操作(使用子查询):
select * from (
select * from your_table order by id desc limit 20
) tmp order by tmp.id asc
发布于 2011-05-06 22:25:50
SELECT *
FROM (
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
) q
ORDER BY
id
或者,更有效地,
(
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
)
ORDER BY
id
发布于 2017-05-29 15:51:09
这应该是完成这项工作的最短表达式:
(select * from your_table order by id desc limit 20) order by id;
https://stackoverflow.com/questions/5912770
复制相似问题