【问题标题】:MYSQL order by like/dislikes and popularityMYSQL 按喜欢/不喜欢和受欢迎程度排序
【发布时间】:2016-03-10 17:39:34
【问题描述】:

我有包含喜欢和不喜欢的 cmets 表,现在我的顺序有问题..

实际上,我的系统显示最喜欢的 cmets 在顶部。

我正在 youtube 中寻找类似系统的东西。

这意味着100like/100dislikes的评论顺序高于1/1..

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

【问题讨论】:

标签: php html mysql sql mysqli


【解决方案1】:

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

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

中的排序

问题:

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

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

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

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

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2016-04-04
    相关资源
    最近更新 更多