获取图像排名

Get images rank

我正在使用下面的代码从我的 table 中获取图像排名。到目前为止一切正常,但问题是,如果 2 个或更多图像具有相似的点,它们将获得相似的排名。我想要的是如果 2 张图像有相似点,我想根据这些图像提交的日期对它们进行排名。

SELECT  uo.*, 
( SELECT  COUNT(DISTINCT ui.total_points)
FROM    photo_list ui
        WHERE   ui.total_points>= uo.total_points
        ) AS rank
FROM    photo_list uo

这是我的 table 的样子

id  | photo_id | total_points
1      432cfc        1
2      fsd324       123
3      gd43ds        5

您可以在比较中添加更多条件:

SELECT  uo.*, 
        (SELECT COUNT(*)
         FROM    photo_list ui
         WHERE   ui.total_points > uo.total_points OR
                 ui.total_points = uo.total_points AND ui.submitted_date  >= uo.submitted_date
        ) AS rank
FROM    photo_list uo

我不确定提交日期的排名顺序是什么,但是 >=<= 应该可以。请注意,我还更改了 COUNT()。如果您包括数据的其他特征,则只计算提交的分数是没有意义的。