首頁 > 後端開發 > php教程 > Mysql如何准确赛选(排序)出最值得推荐的信息?

Mysql如何准确赛选(排序)出最值得推荐的信息?

WBOY
發布: 2016-06-06 20:50:53
原創
854 人瀏覽過

若数据表(info)有如下字段:

id subject message dateline replies views istop
主题 信息 时间 回复 点击数 是否推荐

如何赛选出15天(半个月)内最值得查看/推荐的信息?

一般写法是:

SELECT id,subject,message,dateline,replies,views,istop FROM `info` WHERE istop = 1 ORDER BY replies DESC,views DESC,dateline DESC LIMIT 10;
登入後複製
登入後複製

以上赛选出来的信息,会有一个严重的BUG错误,也就是

replies 和 views 越大 越会排在前面,越往前排,replies 和 views 将会越大,所以这是一个正比,同时这样的操作将对其他信息产生不公正的影响。

现在,求一个ORDER BY 公式不因为replies 和 views 越大而越靠前的算法,

目前我能想到的是:LOG对数函数,对数不会因为replies和views越大而越大。

回复内容:

若数据表(info)有如下字段:

id subject message dateline replies views istop
主题 信息 时间 回复 点击数 是否推荐

如何赛选出15天(半个月)内最值得查看/推荐的信息?

一般写法是:

SELECT id,subject,message,dateline,replies,views,istop FROM `info` WHERE istop = 1 ORDER BY replies DESC,views DESC,dateline DESC LIMIT 10;
登入後複製
登入後複製

以上赛选出来的信息,会有一个严重的BUG错误,也就是

replies 和 views 越大 越会排在前面,越往前排,replies 和 views 将会越大,所以这是一个正比,同时这样的操作将对其他信息产生不公正的影响。

现在,求一个ORDER BY 公式不因为replies 和 views 越大而越靠前的算法,

目前我能想到的是:LOG对数函数,对数不会因为replies和views越大而越大。

如何赛选出15天(半个月)内最值得查看/推荐的信息?其实这个有比较多做法。比如通过一个时间字段也可以做到和这个比较相似。不过我想推荐是我的一个做法就是建一个字段。加上自己一个算法得出一个数直然后order by 字段 desc limit 15。这样子。我认为是比较高效的。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板