Huum, похоже, что этот запрос, который вы хотите оптимизировать, является частью более крупного запроса, и он важен для вопроса, который вы публикуете для всего запроса, чтобы он помог понять вашу проблему ...
Кроме того, из того, что я вижу, вы будете показывать RAge2 для обеих строк с одним и тем же AACode, а не только с тем, у которого Persno = 2, как вы сказали на цели.Вставка всего вашего запроса также поможет понять это.
Я пытался понять ваш запрос, поэтому я создал поддельный запрос для вашего исходного запроса:
SELECT
(SELECT FAge2.AgeCat
FROM People AS FAge2
WHERE FAge2.aacode = People.aacode
AND FAge2.PERSNO = 2) AS RAge2,
People.PersonId
FROM People
Чтобы получить те же результаты, вам понадобится левое соединение, а не внутреннее соединение, поскольку запрос с подзапросом не исключает результаты из внешней таблицы, поэтому в результате запроса на соединение у вас будет что-то вроде этого:
SELECT
FAge2.AgeCat as RAge2,
People.PersonID,
FROM People
Left JOIN People AS FAge2 ON (FAge2.aacode = People.aacode AND FAge2.PERSNO = 2)