Я пытаюсь запросить самую последнюю строку для каждого значения в столбце X.
Моя текущая попытка:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
но в то время как первый столбец в результате содержит последнюю метку времени, остальные столбцы не относятся к самой последней строке.
Как это исправить?
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).
Я не думаю, что вам нужна группа:
SELECT max (timestamp), mytable. * FROM mytable limt 1;
Это только одна таблица? Тогда почему не это:
select * from mytable order by mytimestamp desc limit 1