1

我正在处理我的照片库,并且我有一个过滤器可以用威尔逊分数间隔对我的媒体进行排序。这个分数保存在我的表的一个字段中,称为score

对于此查询,我使用以下字段:id、、UploadTimescore

我遇到的问题是,如果多张图片只有一个竖起大拇指,某些分数将完全相同。在这种情况下,我想按 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

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

4

1 回答 1

1

我不确定(我可能得到了 a>而不是<某个地方)。希望这会奏效

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 
于 2012-07-24T20:25:09.753 回答