Как запросить самую последнюю строку для каждого значения в столбце X?

0

Я пытаюсь запросить самую последнюю строку для каждого значения в столбце X.

Моя текущая попытка:

SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X

но в то время как первый столбец в результате содержит последнюю метку времени, остальные столбцы не относятся к самой последней строке.

Как это исправить?

Теги:

3 ответа

2
Лучший ответ
SELECT M.*
from
(
 SELECT X, max(mytimestamp) MaxT
 FROM mytable
 GROUP BY X
) N
inner join mytable M on M.X = N.X and M.mytimestamp = N.MaxT

В то время как MySQL позволяет смешивать агрегатные и неагрегатные столбцы в запросе GROUP BY.. пожалуйста, не делайте этого. Рассмотрим сценарий, аналогичный тому, что у вас есть:

 SELECT max(mytimestamp) MaxT, min(mytimestamp) MinT, mytable.*
 FROM mytable
 GROUP BY X

Подумайте об этом и сообщите мне, в какую запись должны входить столбцы (подсказка: max или min).

  • 0
    работает очень хорошо, спасибо
0

Я не думаю, что вам нужна группа:

SELECT max (timestamp), mytable. * FROM mytable limt 1;

  • 0
    Мне нужен результат для каждого другого значения в столбце X
  • 0
    Правильно - ты никогда не говорил этого в своем вопросе! Или, по крайней мере, не ясно. Пример вывода и образцы данных будут полезны
0

Это только одна таблица? Тогда почему не это:

select * from mytable order by mytimestamp desc limit 1
  • 0
    потому что мне нужен результат для каждого другого значения в столбце X

Ещё вопросы

Сообщество Overcoder
Наверх
Меню