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

Ada*_*cho 4 html php mysql sql mysqli

我有包含喜欢和不喜欢的评论表,现在我的顺序有问题。

实际上,我的系统在顶部显示的评论数最多。

我正在寻找YouTube中的系统。

这意味着具有100like / 100dislikes的注释的顺序高于1/1。

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

Luk*_*zda 5

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

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

问题:

您需要某种“分数”来进行排序。

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

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

正确的解决方案:分数= Bernoulli参数的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;
Run Code Online (Sandbox Code Playgroud)