MySQL запрос, чтобы выбрать только последние строки групп дат - PullRequest
1 голос
/ 29 мая 2011

У меня следующий запрос:

ВЫБРАТЬ 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" по дате. Таким образом, вывод должен быть:

| elo | date

|1036|2011-04-04

|1000|2011-04-08

|973|2011-04-09

...

Спасибо!

Ответы [ 4 ]

4 голосов
/ 29 мая 2011

Если 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
0 голосов
/ 29 мая 2011

Я думаю, вам нужно использовать 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
0 голосов
/ 29 мая 2011

Это:

 SELECT elo, MAX(date) FROM users_historical_elo

Вернет ли elo и последнюю дату для любого elo, что, по-видимому, является тем, о чем вы просите?

0 голосов
/ 29 мая 2011

Попробуйте:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 group by date order by id asc

...