Я пытаюсь создать запрос SQL для выбора строк из базы данных, упорядоченных по числовому полю, однако в таблице есть повторяющиеся записи. Таблица состоит из следующих столбцов.
UID
- числовой уникальный идентификатор
ACCOUNT_NAME
- имя учетной записи, без изменений
NICK_NAME
- может быть изменено пользователем в любое время
POINTS
- Записывает баллы, хранящиеся в учетной записи пользователя
Цель запроса - отобразить упорядоченное по баллам Account_Name. Однако Account_Name не является уникальным и может появляться в таблице несколько раз. Чтобы справиться с этим, я хотел бы отображать только последнюю строку для каждого Account_Name. Это означает, что в результатах выбора каждое Account_Name должно появляться только один раз. Я пытаюсь, чтобы выбор определялся по UID, то есть я хочу, чтобы отображалась только строка с наибольшим UID, в которой отображается каждое имя учетной записи.
Я пробовал следующее без желаемых результатов. (Имя таблицы: ACCOUNT
)
SELECT DISTINCT A.account_name , A.uid, A.points
FROM account A, account B
where A.account_name = B.account_name
and A.points > 0
and A.uid >= B.uid
order by A.points DESC;
Это не дает мне желаемых результатов, в частности, в базе данных есть учетная запись, в которой существует устаревшая строка с высоким значением вPoints
столбец. Эта запись появляется в качестве первого результата в выборке, даже если она устарела.
Как бы вы порекомендовали настроить этот запрос для выбора нужной информации?
Надеюсь, этого достаточно для работы (первая публикация вопроса). Спасибо за помощь:)
РЕДАКТИРОВАТЬ: Добавление примеров с данными.
Пример таблицы данных: Пример таблицы данных
Текущие результаты: Текущие результаты
Желаемые результаты: Желаемые результаты