我使用下面的代码从我的表中获取图像排名。到目前为止一切都很好,但问题是,如果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
这是我的表格的样子
id | photo_id | total_points
1 432cfc 1
2 fsd324 123
3 gd43ds 5
答案 0 :(得分:1)
您可以为比较添加更多条件:
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()
。如果要包含数据的其他功能,那么只计算提交的点数是没有意义的。