Я пытаюсь выбрать 2 столбца из подзапроса в следующем запросе, но не могу это сделать. Попытался создать таблицу псевдонимов, но все еще не мог получить их.
SELECT
DISTINCT petid,
userid,
(SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate,
(SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID
FROM
pet LEFT JOIN comments ON pet.id = comments.petid
WHERE
userid='ABC' AND
deviceID!='ABC' AND
comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH);
По сути, я пытаюсь получить lastComDate
& lastPosterID
из той же строки - строки, которая является последней в комментариях для конкретного питомца. Пожалуйста, предложите, как я могу получить их эффективным способом.
Приведенный выше запрос работает, но кажется излишним, так как одна и та же строка выбирается дважды. Более того, ORDER BY
предложение значительно медленнее, чем агрегатная функция - как я обнаружил при профилировании запроса. Таким образом, решение, избегающее сортировки, будет оценено.
deviceID
из pets
таблицы - это означает, что я не получаю домашних животных, которые представлены самим «ABC».