Как получить последний ряд из Mysql - PullRequest
0 голосов
/ 09 мая 2018

У меня есть нижеприведенная таблица:

ID      Date                    Value
AL-1    2017-04-01 22:04:08     154
AL-1    2017-04-05 15:08:45     158
AL-1    2017-04-06 18:09:15     225
AL-1    2017-04-08 20:08:17     254
AL-2    2017-04-01 22:04:08     154

Я пытаюсь это: select ID, Value from table1 where id in ('AL-1','AL-2') and group by max(date(Date));, но это дает мне вывод как:

ID      Date                    Value
AL-1    2017-04-01 22:04:08     154
AL-2    2017-04-01 22:04:08     154

Желаемый вывод:

ID      Date                    Value
AL-1    2017-04-08 20:08:17     254
AL-2    2017-04-01 22:04:08     154

Ответы [ 6 ]

0 голосов
/ 09 мая 2018
SELECT ID, SUBSTRING_INDEX(GROUP_CONCAT(DATE ORDER BY DATE DESC SEPARATOR '##'),'##',-1) AS DATE, VALUE
FROM table1 GROUP BY ID 
0 голосов
/ 09 мая 2018

Есть подзапрос, который возвращает каждый идентификатор с его максимальной датой. JOIN с таким результатом:

select t1.ID, t1.Value, t1.date
from table1 t1
join (select id, max(Date) maxdate
      from table1
      where id in ('AL-1','AL-2')
      group by id) t2 on t1.ID = t2.ID and date(t1.Date) = date(t2.maxdate)
where t1.id in ('AL-1','AL-2')
0 голосов
/ 09 мая 2018

Вы можете использовать коррелированный subquery, если вы хотите получить последнюю строку для каждого ID:

select t1.*
from table1 t1
where Date = (select max(t2.Date) from tabel1 t2 where t1.ID = t2.ID);
0 голосов
/ 09 мая 2018

Попробуйте это:

select ID, Value 
from table1 
where id='AL-1' 
group by date desc 
limit 1
0 голосов
/ 09 мая 2018

Попробуйте как ниже:

SELECT * FROM table t
WHERE t.date =(SELECT MAX(date) FROM table )
0 голосов
/ 09 мая 2018

Используйте order by desc с limit

select ID, Value from table1 order by date desc limit 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...