Для того чтобы получить записи с последним статусом из истории изменений, мы можем воспользоваться следующим 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.