У меня есть база данных Postgresql, и у меня возникли проблемы с правильной мой запрос, хотя это кажется общей проблемой.Получить последнюю запись от каждого пользователя в базе данных
Моя таблица выглядит следующим образом:
CREATE TABLE orders (
account_id INTEGER,
order_id INTEGER,
ts TIMESTAMP DEFAULT NOW()
)
Everytime есть новый порядок, я использую его, чтобы связать account_id
и order_id
.
Теперь моя проблема в том, что я хочу получить список с последним заказом (просмотрев ts
) для каждой учетной записи.
Например, если мои данные:
account_id order_id ts
5 178 July 1
5 129 July 6
4 190 July 1
4 181 July 9
3 348 July 1
3 578 July 4
3 198 July 1
3 270 July 12
Тогда я хотел бы запрос, чтобы возвратить только последнюю строку для каждой учетной записи:
account_id order_id ts
5 129 July 6
4 181 July 9
3 270 July 12
Я попытался GROUP BY account_id
, и Я могу использовать это, чтобы получить MAX(ts)
для каждой учетной записи, но тогда у меня нет способа получить связанный order_id
. Я также пробовал подзапросы, но я просто не могу понять это правильно.
Спасибо!
У вас должен быть первичный ключ, поэтому используйте 'LIMIT 1' и'ORDER BY id DESC '. Он меняет порядок и ограничивает его 1 (поэтому самый высокий id - это первый результат, предел тогда принимает только 1 результат). –
Попробуйте найти здесь: http://stackoverflow.com/questions/331367/sql-statement-help-select-latest-order-for-each-customer –
@ Rajat Мне не нужна только одна строка, мне нужна строка для каждого account_id. – gattoo