论坛版块表:
论坛帖子表:
效果图:
一条SQL语句做不到的,建议循环遍历所有版块,每个版块用 SELECT ... WHERE fid = ? ORDER BY dateline LIMIT 6
得到最新6条帖子,为提高效率,(fid, dateline)
可以做成复合索引。
另外,用一条SQL语句查出每个版块最新的1条帖子,是能实现的,但不是件容易的事,试试看吧 :-)
如果用的是MariaDB,已经可以支持window类的聚合函数,用法如下:
select *
from (
select t1.*, ROW_NUMBER() OVER (PARTITION BY fid ORDER BY dateline desc) AS rn,
from t1
) where rn <= 6
order by fid, dateline desc
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
板块很多的话union比较麻烦,下面一条sql可以得到结果
如果你的tid和dateline顺序一致的话可以这么写:
顺序不一致就用下面的:
··························分割线···································
补充一下,还可以引入组内行号,好像更简便一些: