Как получить записи с последним статусом из истории изменений?

Для того чтобы получить записи с последним статусом из истории изменений, мы можем воспользоваться следующим SQL-запросом:

SELECT *
FROM history_table h1
WHERE h1.timestamp = (
    SELECT MAX(timestamp)
    FROM history_table h2
    WHERE h1.id = h2.id
)

В данном запросе мы используем подзапрос, который выбирает максимальное значение timestamp для каждого уникального идентификатора записи. На основе этого мы выбираем все записи из таблицы history_table, где timestamp совпадает с максимальным значением для данного идентификатора.

Здесь предполагается, что у вас есть таблица с историей изменений, где каждая запись содержит информацию о статусе и времени изменения (timestamp). В данном случае, имя таблицы представлено как history_table, и она содержит столбцы id, status и timestamp. Вы должны заменить history_table на имя вашей таблицы, а также соответствующим образом адаптировать имена столбцов в запросе.

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

SELECT *
FROM history_table h1
WHERE h1.timestamp = (
    SELECT MAX(timestamp)
    FROM history_table h2
    WHERE h1.id = h2.id
)
ORDER BY h1.id, h1.timestamp DESC
LIMIT 1

В данном случае, добавлены сортировка по id и timestamp в порядке убывания, а также ограничение только одной записи с помощью оператора LIMIT 1.