mysql 排序后在查询

今天写sql 的时候,遇到一个问题,有一个图书表和一个章节表

book{ id,name,cover}   chapter{id,bid,rank,content,title}

我需要随机五本书,并且获取这五本书的最新章节和标题    ,rank代表多少章

我的sql是:

select t.* from
(select b.* ,c.rank,c.title from book b
inner join chapter c on c.bid=b.id
order by c.rank desc)as t group by t.id

导出来的数据永远都是第一章,而不是最后一章,后来在网上查了一下,在mysql 5.7版本一下,

这个sql是没有问题的,但是要是版本超过>=5.7,就有问题,

那么大于5.7的解决方法,我暂时就找到了一种,就是:

select t.* from
(select b.* ,c.rank,c.title from book b
inner join chapter c on c.bid=b.id
order by c.rank desc limit 1000000)as t group by t.id

需要 设置一下查询的个数大小,limit无穷大,这两个sql唯一的不同就在于此

当然这个limit的最大值就是章节表的count(*)总个数

这样运行结果就和预想的一样了,

希望知道其他方法的大神,可以传授一下其他解法,谢谢!

猜你喜欢

转载自www.cnblogs.com/foreverstudy/p/10335109.html