Quiero poder seleccionar un grupo de filas de una tabla de correos electrónicos y agruparlas por el remitente. Mi consulta es el siguiente:MySQL "Agrupar por" y "Ordenar por"
SELECT
`timestamp`, `fromEmail`, `subject`
FROM `incomingEmails`
GROUP BY LOWER(`fromEmail`)
ORDER BY `timestamp` DESC
La consulta casi funciona como yo quiero que - se selecciona registros agrupados por e-mail. El problema es que el tema y la marca de tiempo no corresponden al registro más reciente de una dirección de correo electrónico en particular.
Por ejemplo, podría volver:
fromEmail: [email protected], subject: hello
fromEmail: [email protected], subject: welcome
Cuando los registros de la base de datos son:
fromEmail: [email protected], subject: hello
fromEmail: [email protected], subject: programming question
fromEmail: [email protected], subject: welcome
Si la "cuestión de programación" sujeto es la más reciente, ¿cómo puedo obtener MySQL para seleccionar ese registro al agrupar los correos electrónicos?
Una gran idea, nunca hubiera pensado hacerlo de esta manera. – philwilks
Me surgió la misma solución hace unos años, y es una gran solución. felicitaciones a b7kich. Dos problemas aquí ...GROUP BY no distingue entre mayúsculas y minúsculas, por lo que LOWER() es innecesario y, en segundo lugar, $ userID parece ser una variable directamente de PHP, su código puede ser vulnerable a inyección SQL si $ userID es proporcionado por el usuario y no forzado a ser un entero. – velcrow
Idea agradable. Muchas gracias –