当威尔逊得分间隔相等时,MYSQL使用UploadDate对下一行进行排序

时间:2012-07-24 19:57:33

标签: php mysql rating rating-system

我正在我的照片库上工作,我有一个过滤器,用Wilson分数间隔对我的媒体进行排序。此分数保存在我的表格score

的字段中

对于此查询,我使用以下字段:idUploadTimescore

我遇到的问题是,如果我们假设多个图片只有一个拇指,那么一些分数将完全相同。在这种情况下,我想通过UploadDate字段对媒体进行排序,使较旧的图片不那么相关。

这是我的脚本来整理我的所有图片(请记住,得分必须高于0才能进入列表)

SELECT *
FROM photos
WHERE   status = 0 
    AND score > 0 
ORDER BY score DESC, id DESC

然后获取下一张照片(下一张照片是分数较低的照片,或者如果得分相等则输出最新的照片)。 $ id是当前图片的唯一ID

SELECT   *
FROM     photos p
INNER JOIN
    (
    SELECT score, id
    FROM photos
    WHERE id = ".$id."
    ) p2 ON p.score < p2.score

WHERE p.status = 0 AND p.net_votes > 0
ORDER BY p.score DESC, p.UploadTime DESC
LIMIT    1

我已经用尽了所有关于如何做到这一点的想法。

1 个答案:

答案 0 :(得分:1)

我不完全确定(我可能在某处>而不是<。希望这会奏效

SELECT *
FROM   photos
WHERE  status = 0
       AND net_votes > 0
       AND ( score < (SELECT p1.score
                      FROM   photos p1
                      WHERE  p1.id = :id)
              OR uploadtime < (SELECT p2.uploadtime
                                  FROM   photos p2
                                  WHERE  p2.id = :id) )
ORDER  BY score DESC,
          uploadtime DESC
LIMIT  1