Как получить идентификатор поля на основе Макс другого поля в той же таблице - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть таблица с именем ae_types. Он содержит три поля, которые имеют отношение к моему вопросу:

aetId               This is Auto Increment and is the Primary Key
aetProposalType     Text field 5 characters long
aetDaysToWait       Byte data type

aetProposalType и aetDaysToWait находятся в уникальном ключе, так что я гарантирую, что никогда не будет двух aetProposalType с одним и тем же aetDaysToWait.

Результат, который я ищу, - получить aetId поля с наибольшим aetDaysToWait для каждого aetProposalType.

Ниже приведен запрос, который я предложил для достижения этой цели, но мне кажется, что он, возможно, излишне сложен и не очень красив.

SELECT ae_types.aetId AS lastEmailId, ae_types.aetProposalType
FROM ae_types INNER JOIN 

(SELECT ae_types.aetProposalType, Max(ae_types.aetDaysToWait) AS MaxOfaetDaysToWait 
FROM ae_types GROUP BY ae_types.aetProposalType)  AS ae_maxDaysToWaitByProposalType 

ON (ae_types.aetDaysToWait = ae_maxDaysToWaitByProposalType.MaxOfaetDaysToWait) 
AND (ae_types.aetProposalType = ae_maxDaysToWaitByProposalType.aetProposalType);

Какие есть альтернативные решения и почему они будут лучше?

PS Если у вас есть какие-либо вопросы, пожалуйста, задавайте, и я буду рад попытаться дать ответ.

1 Ответ

1 голос
/ 17 декабря 2010

Я бы тоже так поступил.

select a.aetId, a.aetProposalType, a.aetDaysToWait
    from ae_types a
        inner join (select aetProposalType, max(aetDaysToWait) as MaxDays
                    from ae_types
                    group by aetProposalType) sq
            on a.aetProposalType = sq.aetProposalType
                and a.aetDaysToWait = sq.MaxDays
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...