这是我的表结构
MyTable
ID[P.K][auto increment] TopicID UID Comment
Run Code Online (Sandbox Code Playgroud)
现在我想得到一个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
Run Code Online (Sandbox Code Playgroud)
我想获得TopicID的最后3个结果,结果应该是
4 1 10 dddd
5 1 11 EEEE
6 1 10 FFFF
Run Code Online (Sandbox Code Playgroud)
并不是
6 1 10 FFFF
5 1 11 EEEE
4 1 10 dddd
Run Code Online (Sandbox Code Playgroud)
bin*_*yLV 41
首先,选择最后20个条目.然后按升序对它们进行排序.您可以在单个查询中轻松执行此操作(使用子查询):
select * from (
select * from your_table order by id desc limit 20
) tmp order by tmp.id asc
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM (
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
) q
ORDER BY
id
Run Code Online (Sandbox Code Playgroud)
或者,更有效地,
(
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
)
ORDER BY
id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51078 次 |
| 最近记录: |