Ниже приведена копия моего кода, моя главная цель — получить рейтинг определенных изображений на основе его photo_id. Приведенный ниже код работает отлично, но проблема в том, что, если есть общее количество очков, эти два изображения получают одинаковое ранговое число. Что я действительно хочу, так это то, что если эти изображения имеют одинаковое количество баллов, я хочу ранжировать их по дате. Как я могу сделать это?
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
WHERE photo_id = :photo_id
Вот как выглядит моя таблица:
id | photo_id | total_points | date
1 432cfc 0 1403076412
2 fsd324 1 1403076413
3 gd43ds 0 1403076411
Вот мое желание результатов:
rank | photo_id | total_points | date
1 fsd324 1 1403076413
2 gd43ds 0 1403076411
3 432cfc 0 1403076412
select * from (
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
WHERE photo_id = :photo_id
) as alias
order by total_points,date;
Это был бы запрос.
SELECT
( SELECT COUNT(DISTINCT ui.total_points)
FROM photo_list ui
WHERE ui.total_points>= uo.total_points
) AS rank,uo.photo_id,uo.total_points,uo.date1
FROM photo_list uo
ORDER BY rank ASC, date1 ASC