MySQL заказ и групповой - PullRequest
2 голосов
/ 22 июля 2010

Я получил таблицу журналов MySQL.Он имеет следующие поля: id, status_id, object_id, создан, изменен.

Мне интересно, как лучше получить последний статус для каждого объекта?

Заранее спасибо!

Редактировать: Мое последнее решение было сделать

SELECT id, status_id, object_id, created, modified 
FROM (SELECT * FROM logs ORDER BY created DESC) AS a
GROUP BY object_id

Это работает, но я думаю, что есть лучший способ сделать это.Кто-нибудь хочет просветить нас здесь, на SO?:)

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

попробуйте, я не проверял это, но должно работать

select object_id, status_id, MAX(created)
from ff
group by object_id having created = MAX(created)

ключ должен использовать having функцию, которая будет выбирать последний элемент для каждого сгруппированного объекта

РЕДАКТИРОВАТЬ:

Я добавил status_id для выбора;)

1 голос
/ 22 июля 2010

Возможно, вы ищете

SELECT status_id FROM logs WHERE object_id = xx ORDER BY modified DESC LIMIT 0, 1

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

SELECT status_code FROM logs, status_codes_table
WHERE status_code_id = status_id AND object_id = xx
ORDER BY modified DESC LIMIT 0, 1

Изменить :

Если вы хотите иметь таблицу всех объектов и их последние коды состояния, вы можете использовать:

SELECT object_id, status_id
FROM logs
GROUP BY object_id
HAVING modified = MAX(modified)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...