У меня есть запрос, где я хочу получить последний элемент в объединенной таблице, но я хочу отфильтровать это объединение. когда я использую предложение «group by», оно возвращает первое значение, а не последнее. как мне получить последнее вместо этого?
например, у меня есть таблица Order и таблица OrderStatus, я хочу получить Order с определенным статусом, но только если это последний OrderStatus ...
Таблица OrderStatus ...
ID | OrderID | Status
---------------------
1 | 1 | cart
2 | 1 | pending
3 | 1 | paid
4 | 2 | cart
5 | 2 | pending
Так что для Status = pending я хочу вернуть только OrderID 2, а не OrderID 1. Вот что я попробовал:
select * from `Order` where `ID` in
(select `OrderID` from `OrderStatus` where `status` like 'pending'
group by `OrderID` order by `ID` DESC)
но возвращает оба заказа. предложение order by
игнорируется, я думаю, оно применяется к запросу после группировки, а не до. Как я могу получить OrderStatus = в ожидании, только если он последний?