У меня следующий запрос:
ВЫБРАТЬ elo, date (date_calculated) date FROM users_historical_elo WHERE uid = 36 упорядочить по идентификатору asc
, который дает этот результат:
| elo | date
|984|2011-04-04
|1010|2011-04-04
|1036|2011-04-04
|1016|2011-04-08
|1000|2011-04-08
|944|2011-04-09
|973|2011-04-09
...
Мне нужна помощь в написании запроса, который выбирает только последнюю группировку "elo" по дате. Таким образом, вывод должен быть:
Спасибо!
Если id является первичным ключом таблицы, то это будет делать:
id
SELECT elo , date(date_calculated) AS date FROM users_historical_elo JOIN ( SELECT MAX(id) AS id FROM users_historical_elo WHERE uid =36 GROUP BY date(date_calculated) ) AS grp ON grp.id = users_historical_elo.id ORDER BY grp.id ASC
Я думаю, вам нужно использовать MAX и GROUP By.См. http://www.tutorialspoint.com/mysql/mysql-max-function.htm
Я думаю, что это будет работать
SELECT elo, MAX(date(date_calculated)) date FROM users_historical_elo WHERE uid =36 GROUP BY elo ORDER BY id asc
Это:
SELECT elo, MAX(date) FROM users_historical_elo
Вернет ли elo и последнюю дату для любого elo, что, по-видимому, является тем, о чем вы просите?
Попробуйте:
SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 group by date order by id asc