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


MYSQL sort the next row with the UploadDate when Wilson score interval are equal

我正在处理我的照片库,我有一个过滤器,可以用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

我已经用尽了所有关于如何做这件事的想法。

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

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