您好,匿名用户
随意问技术百科期待您的加入

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

0 投票

若数据表(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越大而越大。

用户头像 提问 2013年 12月23日 @ Shyvana 上等兵 (214 威望)
分享到:

1个回答

0 投票

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

用户头像 回复 2013年 12月23日 @ Veigar 上等兵 (210 威望)
提一个问题:

相关问题

0 投票
1 回复 49 阅读
用户头像 提问 2012年 12月1日 @ 阿尔托莉雅 下士 (587 威望)
0 投票
1 回复 72 阅读
用户头像 提问 2012年 12月1日 @ Pisces 上等兵 (182 威望)
0 投票
1 回复 62 阅读
用户头像 提问 2012年 12月1日 @ Lady 上等兵 (162 威望)
0 投票
0 回复 17 阅读
+1 投票
1 回复 43 阅读
用户头像 提问 2013年 9月17日 @ Kog'Maw 上等兵 (212 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...