我正在我的照片库上工作,我有一个过滤器,用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
我已经用尽了所有关于如何做到这一点的想法。
答案 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