Estoy tratando de SELECCIONAR 2 columnas de la subconsulta en la siguiente consulta, pero no puedo hacerlo. Intenté crear una tabla de alias, pero aún no pude conseguirlos.
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);
Básicamente, estoy tratando de obtener el lastComDate
& lastPosterID
de la misma fila, la fila que es la última en comentarios para la mascota específica. Sugiera cómo puedo obtenerlos de manera eficiente.
La consulta anterior funciona, pero parece exagerada ya que la misma fila se obtiene dos veces. Además, la ORDER BY
cláusula es significativamente más lenta que la función agregada, como encontré al realizar una consulta de perfil. Por lo tanto, se agradecería una solución que evite la clasificación.
deviceID
es de la pets
tabla, lo que significa que simplemente no me consiguen las mascotas que envía el propio 'ABC'.