На работе мне часто приходится находить максимальный статус за внешний ключ. Я по большей части всегда использовал коррелированный подзапрос в соединении для получения правильной записи. Это предполагает, что самый высокий первичный ключ является самым последним. Вот это небольшой демонстрационный
Каков наилучший способ найти максимальную запись таблицы за внешний ключ?
select
c.plate_number, o.name
from
Car c
inner join Owner o
on o.owner_id = (
select max(owner_id)
from Owner
where owner_type = 'PRIMARY'
)
Это довольно быстро в большинстве запросов, которые я использую, не говоря уже о возможности поставить дополнительные критерии в подзапрос для столбцов типа. Я попытался использовать предложения NOT EXIST, чтобы убедиться, что нет более высоких записей, но не может найти ничего другого. Может ли кто-нибудь предложить что-нибудь лучше, и если да, то почему?
Какова связь между автомобилем и владельцем таблицы? –
Если вы хотите использовать самые последние записи, используйте поле datetime. Тогда вам не нужно делать предположения. –
Если я правильно вас понимаю, вы имеете в виду, что запрос возвращает только одну строку? –