Как использовать группу, показывая новейшую строку данных - PullRequest
0 голосов
/ 04 августа 2009

Может, кто-нибудь подскажет, как использовать предложение group by, группирование по одному из ключей в таблице, но с самой новой отметкой времени вверху? У меня есть несколько строк данных, но я хочу показать только самую новую строку

Ответы [ 2 ]

1 голос
/ 04 августа 2009

Я думаю, вы ищете предложение ORDER BY.

SELECT Foo.Bar, Foo.SomeTimestamp
FROM Foo
ORDER BY Foo.SomeTimestamp DESC

Если вы группируете по столбцу, вы, вероятно, возвращаете агрегированные данные. Если временная метка уникальна для каждой строки агрегированных данных, вам может потребоваться использовать функцию MAX (или аналогичную), чтобы вернуть одну временную метку для каждой группы. Например:

SELECT Foo.TypeID, SUM(Foo.Price) AS Price, MAX(Foo.OrderDate) AS LastOrder
FROM Foo
GROUP BY Foo.TypeID
ORDER BY MAX(Foo.OrderDate) DESC

Если вам нужен только первый ряд, вы можете использовать предложение LIMIT:

SELECT Foo.Bar, Foo.SomeTimestamp
FROM Foo
ORDER BY Foo.SomeTimestamp DESC
LIMIT 0, 1

Это начинается со строки 0 и возвращает самое большее 1 строку.

1 голос
/ 04 августа 2009

Если вы хотите, чтобы в группе было только самое последнее:

SELECT somefield
FROM table t1
WHERE timestamp = (SELECT MAX(timestamp)
                   FROM table t2
                   WHERE t1.somefield = t2.somefield);

Или просто самый последний из них:

SELECT somefield
FROM table
GROUP BY somefield
ORDER BY MAX(timestamp) DESC
LIMIT 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...