Используйте логику следующим образом:
SELECT d.*
FROM delivery d JOIN
delivery_history dh
ON dh.delivery_id = d.id JOIN
(SELECT dh.delivery_id, MAX(dh.id) as max_id
FROM delivery_history dh
GROUP BY dh.delivery_id
) ddh
ON ddh.delivery_id = dh.delivery_id AND ddh.max_id = dh.id
WHERE dh.delivery_status = 'Pending';
Я изменил LEFT JOIN
на внутренние объединения, потому что вам требуется соответствие для условия WHERE
.
РЕДАКТИРОВАТЬ:
Если вам нужен только самый последний статус, возможно, более эффективно использовать коррелированный подзапрос:
select d.*,
(select dh.status
from delivery_history dh
where dh.delivery_id = d.id
order by dh.id desc
limit 1
) as latest_status
from delivery d
having latest_status = 'Pending';