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& lastPosterIDde 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 BYclá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.
                    
                        mysql
                                performance
                                select
                                subquery
                                
                    
                    
                        BufferStack
fuente
                
                fuente

deviceIDes de lapetstabla, lo que significa que simplemente no me consiguen las mascotas que envía el propio 'ABC'.Respuestas:
También puede llevar su subconsulta a una tabla temporal si el rendimiento se ve afectado en algún momento.
fuente
NULLpara amboslastComDateylastPosterIdpara todos los registros.Dado que sus tablas se ven así:
Esta consulta debería hacer el truco:
fuente