我正在处理我的照片库,我有一个过滤器,可以用Wilson分数间隔对我的媒体进行排序。这个分数保存在我的表中名为score
的字段中
对于此查询,我使用以下字段:id
、UploadTime
、score
我遇到的问题是,如果多张照片只有一个大拇指向上,一些分数会完全相同。在这种情况下,我想根据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