MYSQL通过喜欢/不喜欢和受欢迎程度排序

时间:2015-12-05 21:39:02

标签: php html mysql sql mysqli

我有一些评论表,包括好恶,现在我对正确的订单有疑问。

实际上,我的系统会在最顶层显示最多喜欢的评论。

我正在寻找像youtube中的系统。

这意味着100like / 100不喜欢的评论比1/1更高。

我希望这是可以理解的:)

1 个答案:

答案 0 :(得分:4)

这是如何对upvote / downvote,加/减,喜欢/不喜欢等等进行排名的经典问题。有一些可能的解决方案,但它们可能会在特定条件下给出错误的结果。

我强烈建议您阅读并使用 How Not To Sort By Average Rating

中的排序
  

<强>问题:

     

你需要某种“得分”来排序。

     

错误的解决方案#1 :得分=(正评级) - (负评级)

     

错误解决方案#2:得分=平均评分=(正评分)/   (总评分)

     

正确的解决方案:得分=威尔逊得分置信度的下限   伯努利参数的区间

enter image description here

示例代码(您可以根据需要轻松调整它):

SELECT id, ((positive + 1.9208) / (positive + negative) - 
                1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / 
                       (positive + negative)) / (1 + 3.8416 / (positive + negative)) 
       AS ci_lower_bound 
FROM your_tab 
WHERE positive + negative > 0 
ORDER BY ci_lower_bound DESC;